最近在學Linux,和很多初學者一樣,有一大堆的操作命令要去熟悉和掌握,由於Linux秉承“一切皆文件”的思想,因此我們在操作中經常會使用到文件查找的命令嘍,下面就簡單介紹下在Linux中比較常用的查找命令:
一、which
which命令的作用是,在PATH變量指定的路徑中,搜索某個系統命令的位置,並且返回第一個搜索結果。
也就是說它返回的是你該命令所處的位置。
舉個例子哈,比如說我現在看下使用gcc這個命令當前所在的路徑,我用which查找下:
二、whereis
whereis命令只能用於程序名的搜索,而且只搜索二進制文件(參數-b)、man說明文件(參數-m)和源代碼文件(參數-s)。如果省略參數,則返回所有信息。
簡單來說就是查找你當前系統是否安裝了該程序,如果安裝了就顯示該程序的路徑。
下面就還以gcc爲例:
因爲沒有給參數,所以將所有信息都顯示出來了,如果我們只想看說明文件的位置就用-m參數:
這樣它就只講你所需要的路徑給出了。
下面是一些whereis的命令參數:
-b 定位可執行文件。
-m 定位幫助文件。
-s 定位源代碼文件。
-u 搜索默認路徑下除可執行文件、源代碼文件、幫助文件以外的其它文件。
-B 指定搜索可執行文件的路徑。
-M 指定搜索幫助文件的路徑。
-S 指定搜索源代碼文件的路徑。
三、locate
說到locate,其實它基本已經能夠完成我們基本所需的查找需求,並且速度很快,這是因爲它是在一個庫中進行查找的,上面的whereis也是哦。而不是通過硬盤來查找的,這個數據庫是liunx自動創建的,並且每天更新一次。
下面我們還是看看它的用法吧:
其實用起來很簡單,一般用 # locate your_file_name 的形式就可以了,比如我要查找一個名爲11_26.c的一個文件:
再用之前最好先執行下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目錄中訪問了哪些文件:
2、再看看10天內在c目錄下更改了哪些文件:
3、再看看7天內在c目錄下創建了哪些文件:
4、再找找大小超過10000000c的文件:
6、在/下查找code目錄:
還有好多的參數就不一一列舉了,大家一起去電腦上體驗吧,而且參數組合使用可以讓你對你的文件爲所欲爲,哈哈....
拜了個拜!