搜索位于 2 個不同主目錄中的 .txt 檔案時,根據當前作業目錄,只會顯示一個。為什么是這樣?
/home/bob/1.txt
/home/alice/dir1/2.txt
pwd /tmp
[root@host tmp]#find /home -name *.txt
/home/bob/1.txt
/home/alice/dir1/2.txt
pwd /home
[root@host bob]#find /home -name *.txt
/home/bob/1.txt
為什么從 bob 目錄中搜索只回傳一個檔案?
uj5u.com熱心網友回復:
為什么從 bob 目錄中搜索只回傳一個檔案?
因為當作業目錄/home/bob中,*.txt在find命令被shell擴展(到1.txt),這就是傳遞給find。也就是說,find /home -name 1.txt。這將在 中找到檔案/home/bob,但不會在/home/alice. 它會發現/home/alice/1.txt,如果這樣的檔案存在。
另一方面,當模式與任何檔案(相對于作業目錄)不匹配時,它會作為文字傳遞。至少在默認情況下——你應該小心這一點,因為如果nullglobshell 選項有效并且find命令是從模式不匹配任何檔案的位置執行的,那么模式將被擴展為空。
如果要確保 shell 路徑名擴展未應用于模式,請參考它:
find /home -name '*.txt'
或者
find /home -name \*.txt
或者 ....
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/341790.html
標籤:linux 猛击 找 gnu-findutils
上一篇:有沒有辦法查看出站符號鏈接?
