linux - shell教學 - shell script while
如何根據通配符匹配遞歸地查找當前文件夾和子文件夾中的所有文件? (7)
find
將找到所有匹配模式的文件:
find . -name "*foo"
但是,如果你想要一張照片:
tree -P "*foo"
希望這可以幫助!
如何根據通配符匹配遞歸地查找當前文件夾和子文件夾中的所有文件?
如果你的shell支持一個新的globbing選項 (啟用它: shopt -s globstar
),你可以使用:
echo **/*foo*
以遞歸方式查找任何文件或文件夾。 這是由Bash 4,zsh和類似的shell支持的。
就我個人而言,我已經定義了這個shell函數:
f() { find . -name "*$1*"; }
注意:上面的行可以直接粘貼到shell或添加到用戶的~/.bashrc
文件中。
然後我可以輸入以下內容查找任何文件:
f some_name
您可以使用:
# find . -type f -name 'text_for_search'
如果您想使用REGX,請使用-iname
# find . -type f -iname 'text_for_search'
找到grep的管道往往更方便; 它為您提供了用於任意通配符匹配的正則表達式的全部功能。
例如,要在文件名中查找所有帶有不區分大小寫的字符串“foo”的文件:
~$ find . -print | grep -i foo
用於文件搜索
find / -xdev -name settings.xml
- >整個計算機
find ./ -xdev -name settings.xml
- >當前目錄及其子目錄
用於擴展類型的文件
find . -type f -name "*.iso"
find -L . -name "foo*"
在少數情況下,我需要-L參數來處理符號目錄鏈接。 默認情況下,符號鏈接被忽略。 在這些情況下,我很困惑,因為我將目錄切換到子目錄,並查看與該模式匹配的文件,但發現不會返回文件名。 使用-L解決了這個問題。 查找的符號鏈接選項是-P -L -H