歡迎光臨
每天分享高質量文章

在 Linux 上尋找你正在尋找的東西 | Linux 中國

怎樣在 Linux 系統上使用 find、locate、mlocate、which、 whereis、 whatis 和 apropos 命令尋找檔案。
— Sandra Henry-stocker


致謝
編譯自 | https://www.networkworld.com/article/3268768/linux/finding-what-you-re-looking-for-on-linux.html 
 作者 | Sandra Henry-stocker
 譯者 | MjSeven ? ? ? ? 共計翻譯:36 篇 貢獻時間:100 天

怎樣在 Linux 系統上使用 find、locate、mlocate、which、 whereis、 whatis 和 apropos 命令尋找檔案。

在 Linux 系統上找到你要找的檔案或命令並不難, 有很多種方法可以尋找。

find

最顯然的無疑是 find 命令,並且 find 變得比過去幾年更容易使用了。它過去需要一個搜尋的起始位置,但是現在,如果你想將搜尋限制在當下目錄中,你還可以使用僅包含檔案名或正則運算式的 find 命令。

  1. $ find e*

  2. empty

  3. examples.desktop

這樣,它就像 ls 命令一樣工作,並沒有做太多的搜尋。

對於更專業的搜尋,find 命令需要一個起點和一些搜尋條件(除非你只是希望它提供該起點目錄的遞迴串列)。命令 find -type f 從當前目錄開始將遞迴列出所有常規檔案,而 find ~nemo -type f -empty 將在 nemo 的主目錄中找到空檔案。

  1. $ find ~nemo -type f -empty

  2. /home/nemo/empty

參見:11 個好玩的 Linux 終端技巧[1]

locate

locate 命令的名稱表明它與 find 命令基本相同,但它的工作原理完全不同。find 命令可以根據各種條件 —— 名稱、大小、所有者、許可權、狀態(如空檔案)等等選擇檔案並作為搜尋選擇深度,locate 命令透過名為 /var/lib/mlocate/mlocate.db 的檔案查詢你要查詢的內容。該資料檔案會定期更新,因此你剛建立的檔案的位置它可能無法找到。如果這讓你感到困擾,你可以執行 updatedb 命令立即獲得更新。

  1. $ sudo updatedb

mlocate

mlocate 命令的工作類似於 locate 命令,它使用與 locate 相同的 mlocate.db 檔案。

which

which 命令的工作方式與 find 命令和 locate 命令有很大的區別。它使用你的搜尋路徑($PATH)並檢查其上的每個目錄中具有你要查詢的檔案名的可執行檔案。一旦找到一個,它會停止搜尋並顯示該可執行檔案的完整路徑。

which 命令的主要優點是它回答了“如果我輸入此命令,將執行什麼可執行檔案?”的問題。它會忽略不可執行檔案,並且不會列出系統上帶有該名稱的所有可執行檔案 —— 列出的就是它找到的第一個。如果你想查詢具有某個名稱的所有可執行檔案,則可以像這樣執行 find 命令,但是要比非常高效 which 命令用更長的時間。

  1. $ find / -name locate -perm -a=x 2>/dev/null

  2. /usr/bin/locate

  3. /etc/alternatives/locate

在這個 find 命令中,我們在尋找名為 “locate” 的所有可執行檔案(任何人都可以執行的檔案)。我們也選擇了不要檢視所有“拒絕訪問”的訊息,否則這些訊息會混亂我們的螢幕。

whereis

whereis 命令與 which 命令非常類似,但它提供了更多資訊。它不僅僅是尋找可執行檔案,它還尋找手冊頁(man page)和源檔案。像 which 命令一樣,它使用搜索路徑($PATH) 來驅動搜尋。

  1. $ whereis locate

  2. locate: /usr/bin/locate /usr/share/man/man1/locate.1.gz

whatis

whatis 命令有其獨特的使命。它不是實際查詢檔案,而是在手冊頁中查詢有關所詢問命令的資訊,並從手冊頁的頂部提供該命令的簡要說明。

  1. $ whatis locate

  2. locate (1) - find files by name

如果你詢問你剛剛設定的指令碼,它不會知道你指的是什麼,並會告訴你。

  1. $ whatis cleanup

  2. cleanup: nothing appropriate.

apropos

當你知道你想要做什麼,但不知道應該使用什麼命令來執行此操作時,apropos 命令很有用。例如,如果你想知道如何查詢檔案,那麼 apropos find 和 apropos locate 會提供很多建議。

  1. $ apropos find

  2. File::IconTheme (3pm) - find icon directories

  3. File::MimeInfo::Applications (3pm) - Find programs to open a file by mimetype

  4. File::UserDirs (3pm) - find extra media and documents directories

  5. find (1) - search for files in a directory hierarchy

  6. findfs (8) - find a filesystem by label or UUID

  7. findmnt (8) - find a filesystem

  8. gst-typefind-1.0 (1) - print Media type of file

  9. ippfind (1) - find internet printing protocol printers

  10. locate (1) - find files by name

  11. mlocate (1) - find files by name

  12. pidof (8) - find the process ID of a running program.

  13. sane-find-scanner (1) - find SCSI and USB scanners and their device files

  14. systemd-delta (1) - Find overridden configuration files

  15. xdg-user-dir (1) - Find an XDG user dir

  16. $

  17. $ apropos locate

  18. blkid (8) - locate/print block device attributes

  19. deallocvt (1) - deallocate unused virtual consoles

  20. fallocate (1) - preallocate or deallocate space to a file

  21. IO::Tty (3pm) - Low-level allocate a pseudo-Tty, import constants.

  22. locate (1) - find files by name

  23. mlocate (1) - find files by name

  24. mlocate.db (5) - a mlocate database

  25. mshowfat (1) - shows FAT clusters allocated to file

  26. ntfsfallocate (8) - preallocate space to a file on an NTFS volume

  27. systemd-sysusers (8) - Allocate system users and groups

  28. systemd-sysusers.service (8) - Allocate system users and groups

  29. updatedb (8) - update a database for mlocate

  30. updatedb.mlocate (8) - update a database for mlocate

  31. whereis (1) - locate the binary, source, and manual page files for a...

  32. which (1) - locate a command

總結

Linux 上可用於查詢和識別檔案的命令有很多種,但它們都非常有用。


via: https://www.networkworld.com/article/3268768/linux/finding-what-you-re-looking-for-on-linux.html

作者:Sandra Henry-Stocker[3] 選題:lujun9972 譯者:MjSeven 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂