本教程將帶您了解在Linux中尋找目錄的不同方法。正如您可能已經知道的那樣,在Linux中,一切皆為文件,包括目錄。Linux用戶在命令行中常見的操作之一是搜索文件或目錄。
有幾種不同的方法和工具可用於在命令行中搜索文件,例如find,locate和which。然而,最後一個工具(which)僅用於定位命令。
在本教程的範圍內,我們將主要關注find工具,它在實時Linux文件系統中搜索文件,相對於locate更高效和可靠。
locate的缺點在於它讀取由updatedb創建的一個或多個數據庫,而不是搜索實時文件系統。此外,它也不提供靈活性,無法指定搜索的起始位置。
以下是運行locate命令的語法:
# locate [option] [search-pattern]
為了展示locate的缺點,讓我們假設我們正在當前工作目錄中搜索名為pkg
的目錄。
注意:在下面的命令中,選項--basename
或-b
告訴locate僅匹配文件(目錄)基本名(即pkg),而不是路徑(/path/to/pkg)。其中\
是一個globbing字符,它禁用了對pkg的隱式替換為*pkg*。
$ locate --basename '\pkg'

從上面的命令輸出中可以看到,locate將從根目錄(/)開始搜索,這就是為什麼其他具有相同名稱的目錄也會匹配。
因此,為了應對這個問題,請使用以下簡化語法來使用find:
$ find starting-point options [expression]
讓我們看幾個例子。
要在當前工作目錄中搜索與上面相同的目錄(pkg)
,運行以下命令,其中-name
標誌讀取表達式,這在這種情況下是目錄基本名。
$ find . -name "pkg"
如果遇到“Permission denied”錯誤,請使用sudo command 這樣使用:
$ sudo find . -name "pkg"

您可以使用-type
标志来阻止find搜索其他文件类型,除了目录,如下命令所示:
$ sudo find . -type d -name "pkg"
此外,如果您想以长列表格式列出目录,请使用动作开关-ls
:
$ sudo find . -type d -name "pkg" -ls

接下来,选项-iname
将启用不区分大小写的搜索:
$ sudo find . -type d -iname "pkg" $ sudo find . -type d -iname "PKG"

要查找更多有趣且高级的使用信息,请阅读find和locate的手册页面。
$ man find $ man locate
最后,find命令在Linux系统中搜索文件(或目录)时比locate命令更可靠且高效。
与之前一样,请不要忘记通过下面的评论部分发送您的反馈或问题。最后,请始终保持与Tecmint的联系。