linux命令和文件查找之which、whereis、locate、find的特點和區別

  linux下的查找命令有很多,常用的有which、whereis、locate、find。平時在網上搜索一些教程的時候,經常會有讓使用這四條命令中的一條去查找一些東西,但是經常這次說用which,下次說用whereis,既然都是查找,爲什麼要用到這麼多種命令?實在是很讓人發暈啊。所以今天特意寫一篇文章來分析下這三者的特點和區別。
    
1、which
    這條命令主要是用來查找系統PATH目錄下的可執行文件。說白了就是查找那些我們已經安裝好的可以直接執行的命令。比如:
    which ls
    alias ls='ls --color=auto'
     /bin/ls
    其中的alias代表的是命令別名。這裏需要說明的是which是可以分辨出命令的別名的,你也可以通過which 命令別名查找到命令的位置。這點下面要介紹的命令是做不到的。
2、whereis
    這個命令可以用來查找二進制(命令)、源文件、man文件。與which不同的是這條命令可以是通過文件索引數據庫而非PATH來查找的,所以查找的面比which要廣。例如:
    [root@MR pip-1.5.4]# whereis ls
    ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
    可以看到whereis還找到了ls命令的相關man文件。這條命令一般情況下只找的出命令相關的文件,並不能找出任意指定的文件。
3、locate
    這個命令也是通過數據庫查找文件,但是這個命令的適用範圍就比whereis大多了。這個命令可以找到任意你指定要找的文件,並且可以只輸入部分文件名(前面兩個命令是要輸入完整文件名的)。同時locte還可以通過-r選項使用正則表達式,功能十分強大。例如:
[root@MR pip-1.5.4]# locate ls |head -n 5
/wlsvhtest-tap0
/wlsvhtest-wlan1
/bin/alsaunmute
/bin/false
/bin/ls
    這裏只顯示了前五條,但是實際上locate輸出的內容是非常多的。
    需要注意的是locate使用的索引數據庫裏的信息並不一定是實時有效的,可以使用updatedb命令更新索引數據庫。
4、find
    find命令要比前邊幾條複雜的多,功能也強大的多。這條命令是通過直接搜索硬盤的方式查找的,所以可以保證查找的信息絕對可靠。並且支持各種查找條件。但是功能強大肯定是有代價的,那就是搜索速度慢。所以一般前邊幾種找不出來的情況下才會使用find。另外如果要實現某些特殊條件的查找,比如找出某個用戶的size最大的文件,那就只能用find了。

    總結:
    which主要用來查找可直接執行的命令,可以查找別名。whereis比which的搜索範圍大了一些,同時可以查找源文件和man文件。這兩個命令適用於查找安裝好的命令。
    locate的查找範圍更大,可以查找任意類型文件。適合快速查找指定文件。
    find最強大也最慢。適合查找前幾個命令找不到的文件。
--------------------- 
原文:https://blog.csdn.net/l1902090/article/details/24887997 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章