Command-Line

如何從任何目錄中查找文件

  • March 10, 2020

我正在嘗試查找名為Book1的文件。

在我的測試中,我試圖尋找上述文件,在這個測試中,我不知道該文件的位置。

我試過find / -iname book1了,但沒有輸出。

如果我不知道文件的位置,如何使用命令行找到名為 book1 的文件?

編輯:

下面更詳細地描述了我的方案:

  1. 文件副檔名未知
  2. 確切名稱(即大寫字母、數字等)未知
  3. 文件位置未知

首先, to 的一個參數-iname是一個 shell模式您可以在Bash 手冊中閱讀有關模式的更多資訊。要點是,為了find實際找到文件,文件名必須與指定的模式匹配。要進行不區分大小寫的字元串book1匹配Book1.gnumeric,您必須添加*它,它看起來像這樣:

find / -iname 'book1*'

或指定全名:

find / -iname 'Book1.gnumeric'

其次,-inamefind忽略文件名大小寫,因此如果您指定-iname book1它也可能會 findBook1bOok1。如果您確定要查找的文件已被呼叫,Book1.gnumeric 則不要使用-inamebut -name,它會更快:

find / -name 'Book1.gnumeric'

第三,請記住引用另一個答案中所說的模式。

最後 - 您確定要在系統上的任何位置查找該文件 $HOME如果您處理該文件或從某處下載它,您正在查找的文件可能實際上位於您的目錄中。同樣,這可能要快得多。

編輯

我注意到您編輯了您的問題。如果您確實不知道完整的文件名、大小寫和位置,您應該使用如下內容:

find / -iname 'book1*'

我還建議2>/dev/null在該行的末尾添加以隱藏以非 root 使用者身份*permission denied*呼叫時將出現的所有錯誤和其他錯誤:find

find / -iname 'book1*' 2>/dev/null

如果您確定要查找單個文件,並且系統上只有一個文件符合條件,您可以find在找到第一個匹配文件後退出:

find / -iname 'book1*' -print -quit 2>/dev/null

引用自:https://unix.stackexchange.com/questions/362292