我試圖查找具有特定擴展名的文件。 例如,我想找到的命名羅伯特遞歸地查找具有特定擴展名的文件
所有.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