我正在尝试查找具有特定扩展名的文件。例如,我要查找所有名为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
改用-不区分大小写。