Command-Line
如何從任何目錄中查找文件
我正在嘗試查找名為Book1的文件。
在我的測試中,我試圖尋找上述文件,在這個測試中,我不知道該文件的位置。
我試過
find / -iname book1
了,但沒有輸出。如果我不知道文件的位置,如何使用命令行找到名為 book1 的文件?
編輯:
下面更詳細地描述了我的方案:
- 文件副檔名未知
- 確切名稱(即大寫字母、數字等)未知
- 文件位置未知
首先, to 的一個參數
-iname
是一個 shell模式。您可以在Bash 手冊中閱讀有關模式的更多資訊。要點是,為了find
實際找到文件,文件名必須與指定的模式匹配。要進行不區分大小寫的字元串book1
匹配Book1.gnumeric
,您必須添加*
它,它看起來像這樣:find / -iname 'book1*'
或指定全名:
find / -iname 'Book1.gnumeric'
其次,
-iname
將find
忽略文件名大小寫,因此如果您指定-iname book1
它也可能會 findBook1
等bOok1
。如果您確定要查找的文件已被呼叫,Book1.gnumeric
則不要使用-iname
but-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