Linux常見四種查找命令

  最近在學Linux,和很多初學者一樣,有一大堆的操作命令要去熟悉和掌握,由於Linux秉承“一切皆文件”的思想,因此我們在操作中經常會使用到文件查找的命令嘍,下面就簡單介紹下在Linux中比較常用的查找命令:

一、which

 which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。

也就是說它返回的是你該命令所處的位置。

舉個例子哈,比如說我現在看下使用gcc這個命令當前所在的路徑,我用which查找下:

wKiom1c8WYuDa6XdAAAkpWorOGg055.png

二、whereis

   whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。

簡單來說就是查找你當前系統是否安裝了該程序,如果安裝了就顯示該程序的路徑。

下面就還以gcc爲例:

wKiom1c8WqySfrO7AAA_beSLGC4285.png因爲沒有給參數,所以將所有信息都顯示出來了,如果我們只想看說明文件的位置就用-m參數:

wKioL1c8XB_wa8PqAAAsdElPriY849.png

這樣它就只講你所需要的路徑給出了。

下面是一些whereis的命令參數:

-b   定位可執行文件。

-m   定位幫助文件。

-s   定位源代碼文件。

-u   搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。

-B   指定搜索可執行文件的路徑。

-M   指定搜索幫助文件的路徑。

-S   指定搜索源代碼文件的路徑。


三、locate

說到locate,其實它基本已經能夠完成我們基本所需的查找需求,並且速度很快,這是因爲它是在一個庫中進行查找的,上面的whereis也是哦。而不是通過硬盤來查找的,這個數據庫是liunx自動創建的,並且每天更新一次。

下面我們還是看看它的用法吧:

其實用起來很簡單,一般用 # locate your_file_name 的形式就可以了,比如我要查找一個名爲11_26.c的一個文件:

wKiom1c8YYaxemIpAAAr1qhfpVU235.png

再用之前最好先執行下updatedb更新下,然後再進行使用。

z再給一些常用的參數:

 -n  至多顯示n個輸出。

 -h  顯示輔助訊息

 -v  顯示更多的訊息

 -V  顯示程式的版本訊息

四、find

  關於find我就用一句話來形容它:find是最常見和最強大的查找命令,你可以用它找到任何你想找的文件。上面說了locate是在一個庫裏查找文件,因此對於一些有新變動的文件,而你的庫還沒更新時,這些文件你是用locate找不到的,這時find就派上用場了,它可是從硬盤裏一個一個進行查找的,正因爲這樣它的速度也會相當慢,一般都把它丟到後臺運行。

爲什麼說它功能強大呢?

因爲它有很多的參數:

pathname:       #find命令所查找的目錄路徑。例如用.來表示當前目錄,用/來表示系統根目錄。
-print:        #find命令將匹配的文件輸出到標準輸出。
-exec:        #find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式                   爲'command'{ } \;,注意{ }和\;之間的空格。
-ok:          #和-exec的作用相同,只不過以一種更爲安全的模式來執行該參數所給出的shell                   命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。

-name   filename             #查找名爲filename的文件
-perm                     #按執行權限來查找
-user    username            #按文件屬主來查找
-group groupname              #按組來查找
-mtime   -n +n               #按文件更改時間來查找文件,-n指n天以內,+n指n天以前
-atime    -n +n              #按文件訪問時間來查

-ctime    -n +n              #按文件創建時間來查找文件,-n指n天以內,+n指n天以前

-nogroup                   #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
-nouser                    #查無有效屬主的文件,即文件的屬主在/etc/passwd中不存在
-ctime    -n +n               #按文件創建時間來查找文件,-n指n天以內,+n指n天以前
-nogroup                   #查無有效屬組的文件,即文件的屬組在/etc/groups中不存在
-nouser                    #查無有效屬主的文件,即文件的屬主在/etc/passwd中不存在
-newer   f1 !f2               #查更改時間比f1新但比f2舊的文件
-type    b/d/c/p/l/f         #查是塊設備、目錄、字符設備、管道、符號鏈接、普通文件
-size      n[c]               #查長度爲n塊[或n字節]的文件
-depth                       #使查找在進入子目錄前先行查找完本目錄
-fstype                     #查更改時間比f1新但比f2舊的文件
-type    b/d/c/p/l/f         #查是塊設備、目錄、字符設備、管道、符號鏈接、普通文件
-size      n[c]               #查長度爲n塊[或n字節]的文件
-depth                       #使查找在進入子目錄前先行查找完本目錄
-fstype       #查位於某一類型文件系統中的文件,這些文件系統類型通常可在/etc/fstab中找到
-mount                       #查文件時不跨越文件系統mount點
-follow                      #如果遇到符號鏈接文件,就跟蹤鏈接所指的文件
-cpio        #查位於某一類型文件系統中的文件,這些文件系統類型通常可在/etc/fstab中找到
-mount                       #查文件時不跨越文件系統mount點
-follow                      #如果遇到符號鏈接文件,就跟蹤鏈接所指的文件
-cpio                        #對匹配的文件使用cpio命令,將他們備份到磁帶設備中
-prune                       #忽略某個目錄

下面來舉幾個例子來體會下吧:

1、顯示下今天一天在code目錄中訪問了哪些文件:

wKioL1c8cs3w1FnTAAA_MZO69w8843.png

2、再看看10天內在c目錄下更改了哪些文件:

wKioL1c8c6iTHzJhAACYpbIdh_k515.png

3、再看看7天內在c目錄下創建了哪些文件:

wKioL1c8dGCD7Q7lAACXi1NMyJc096.png

4、再找找大小超過10000000c的文件:

wKioL1c8dwfhlghhAABmAEPoO5w241.png5、在/查找11_26.c文件:

wKioL1c8d4eRX93FAAAo_sVMNCE836.png

6、在/下查找code目錄:

wKiom1c8d4aj0WR4AAAiQ4Ifvv8980.png

還有好多的參數就不一一列舉了,大家一起去電腦上體驗吧,而且參數組合使用可以讓你對你的文件爲所欲爲,哈哈....

拜了個拜!

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