我對 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
養成引用論點的習慣是個好主意。
* 從技術上講,它會匹配任何項目,但你的主目錄中不太可能有管道、套接字或設備節點