簡單的 find 指令將無法運作

簡單的 find 指令將無法運作

我對 Linux 相當陌生,目前我正在嘗試執行以下命令,

find ~ -name apt.no

我正在尋找apt.no另一個列為 的目錄montrose-files

shell 沒有回應,它只是建立一個新行。誰能向我解釋為什麼這甚至沒有產生結果?

bbcharlieca@myvm:~$ find ~ -name apt.no
bbcharlieca@myvm:~$ █

在此輸入影像描述

答案1

您的命令會尋找在您的目錄及其下的任何目錄中 所呼叫的檔案find ~ -name apt.no或目錄。 (代表您自己的主目錄。)apt.no$HOME~

除非montrose-files位於您自己的主目錄中,否則不會搜尋它,並且不會找到目標檔案。例如,如果montrose-files位於另一個路徑下,則需要指定路徑:

find /path/to/montrose-files -name 'apt.no' -print

令人困惑的是,如果您之前在主目錄中建立了符號鏈接,montrose-files則也不會搜尋該符號鏈接,因為find預設不遵循符號鏈接。您可以透過以下兩種方式之一解決該問題:

find ~ -follow -name 'apt.no' -print
find ~/montrose-files/ -name 'apt.no' -print

在第一種方法中,我們告訴find符號follow連結。對於某些版本,find這可能是一個糟糕的方法,因為如果符號連結指向循環,您最終可能會多次遍歷該結構。

在第二種方法中,我們透過附加尾部斜線來強制符號連結解析為真實的目錄目標。

最後,請注意,在所有情況下,我都引用了我正在搜尋的檔案名稱。在您的簡單情況下,它不會有任何區別,但是當您開始使用通配符來匹配檔案名稱的未知部分(例如, )時,您應該使用單引號來確保通配符在可以獲取apt.*之前不會被shell 處理。find​養成引用論點的習慣是個好主意。


* 從技術上講,它會匹配任何項目,但你的主目錄中不太可能有管道、套接字或設備節點

相關內容