我正在尝试查找具有特定扩展名的文件。例如,我要查找所有名为Robert的.pdf和.jpg文件
我知道我可以执行此命令
$ find . -name '*.h' -o -name '*.cpp'
但是我需要指定扩展名之外的文件本身的名称。我只是想看看是否有一种避免重复写入文件名的方法,谢谢!
我正在尝试查找具有特定扩展名的文件。例如,我要查找所有名为Robert的.pdf和.jpg文件
我知道我可以执行此命令
$ find . -name '*.h' -o -name '*.cpp'
但是我需要指定扩展名之外的文件本身的名称。我只是想看看是否有一种避免重复写入文件名的方法,谢谢!
iname还是name取决于您要查找的内容。我去过的情况是至关重要的。
Answers:
我的偏好:
find . -name '*.jpg' -o -name '*.png' -print | grep Robert
find -exec ...
jpg或png作为较长路径的一部分,则此方法将无法很好地工作。
作为对上使用-regex选项的替代方法find,因为该问题被标记为重击,您可以使用大括号扩展机制:
eval find . -false "-o -name Robert".{jpg,pdf}
eval还是上述.命令中的,或者您find是更复杂事物的别名,或者您没有find在Linux版本上使用普通的GNU 。
find不支持-false。我通过给出两个互斥的条件来解决此问题,因此它们共同是错误的:-inum 1 -inum 2。
作为脚本,您可以使用:
find "${2:-.}" -iregex ".*${1:-Robert}\.\(h\|cpp\)$" -print
findcc并用作
findcc [name] [[search_direcory]]
例如
findcc # default name 'Robert' and directory .
findcc Joe # default directory '.'
findcc Joe /somewhere # no defaults
请注意,您不能使用
findcc /some/where #eg without the name...
也可以选择使用
find "$1" -print | grep "$@"
和
findcc directory grep_options
喜欢
findcc . -P '/Robert\.(h|cpp)$'
iname改用-不区分大小写。