我试图查找具有特定扩展名的文件。 例如,我想找到的命名罗伯特递归地查找具有特定扩展名的文件
所有.pdf和.jpg文件,我知道我能做到这一点命令
$ find . -name '*.h' -o -name '*.cpp'
,但我需要指定文件本身除了扩展名。 我只想看看是否有可能避免再次写入文件名 谢谢!
我试图查找具有特定扩展名的文件。 例如,我想找到的命名罗伯特递归地查找具有特定扩展名的文件
所有.pdf和.jpg文件,我知道我能做到这一点命令
$ find . -name '*.h' -o -name '*.cpp'
,但我需要指定文件本身除了扩展名。 我只想看看是否有可能避免再次写入文件名 谢谢!
我的偏好:
find . -name '*.jpg' -o -name '*.png' -print | grep Robert
使用find
的-regex
说法:
find . -regex '.*/Robert\.\(h\|cpp\)$'
或者只是使用-name
:
find . -name 'Robert.*' -a \(-name '*.cpp' -o -name '*.h' \)
find -name "*Robert*" \(-name "*.pdf" -o -name "*.jpg" \)
的-o
repreents一个OR
条件,你可以添加你想要在大括号内为多。因此,这表示查找包含名称中任何位置的单词“Robert”的所有文件,其名称以“pdf”或“jpg”结尾。
作为替代使用上find
-regex
选项,因为这个问题被标记为bash,可以使用支具膨胀机构:
eval find . -false "-o -name Robert".{jpg,pdf}
发现报告 “的路径必须先表达”,有什么问题呢?我通常会添加引号来解决它,但不适用于此表达式。谢谢! – netawater 2015-11-16 05:28:14
我怀疑你在上面的命令中忘记了'eval'或者''',或者你的'find'是更复杂的别名,或者你的Linux版本没有使用GNU'find'。 – jxh 2015-11-16 16:51:54
感谢您的回复,我使用了这样的脚本:FILEEXTEIONS = cs,[ch] eval find。 -false“-o -name *”。{$ FILEEXTEIONS},并报告错误。 – netawater 2015-11-17 01:47:06
作为一个脚本,您可以使用:
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 "[email protected]"
和
findcc directory grep_options
像
findcc . -P '/Robert\.(h|cpp)$'
很好地工作,但稍微缺点是,它排除了你做'find -exec ...' – 2014-09-06 08:20:33
如果我想在特定路径的所有文件夹中找到所有xxx-deployment.yml文件,该怎么办? – 2017-11-09 19:19:27