which命令 查看可執(zhí)行文件的位置
which指令會在PATH變量指定的路徑中历恐,搜索某個系統(tǒng)命令的位置,并且返回第一個搜索結果专筷。
命令參數(shù):
-n 指定文件名長度弱贼,指定的長度必須大于或等于所有文件中最長的文件名。
-p 與-n參數(shù)相同仁堪,但此處的包括了文件的路徑哮洽。
-w 指定輸出時欄位的寬度。
-V 顯示版本信息
使用實例
whereis 只能用于程序名的搜索弦聂,而且只搜索二進制文件(參數(shù)-b)鸟辅、man說明文件(參數(shù)-m)和源代碼文件(參數(shù)-s)氛什。如果省略參數(shù),則返回所有信息
和find相比匪凉,whereis查找的速度非城姑迹快,這是因為linux系統(tǒng)會將 系統(tǒng)內的所有文件都記錄在一個數(shù)據庫文件中再层,當使用whereis和locate時贸铜,會從數(shù)據庫中查找數(shù)據,而不是像find命令那樣聂受,通 過遍歷硬盤來查找蒿秦,效率自然會很高。 但是該數(shù)據庫文件并不是實時更新蛋济,默認情況下時一星期更新一次棍鳖,因此,我們在用whereis和locate 查找文件時碗旅,有時會找到已經被刪除的數(shù)據渡处,或者剛剛建立文件,卻無法查找到祟辟,原因就是因為數(shù)據庫文件沒有被更新医瘫。
whereis [-bmsu] [BMS 目錄名 -f ] 文件名
locate 讓使用者可以很快速的搜尋檔案系統(tǒng)內是否有指定的檔案
find 用于在文件樹種查找文件,并作出相應的處理
命令參數(shù)
find pathname -options [-print -exec -ok ...]
pathname: find命令所查找的目錄路徑旧困。例如用.來表示當前目錄醇份,用/來表示系統(tǒng)根目錄。
-print: find命令將匹配的文件輸出到標準輸出叮喳。
-exec: find命令對匹配的文件執(zhí)行該參數(shù)所給出的shell命令被芳。相應命令的形式為'command' { } ;,注意{ }和\馍悟;之間的空格畔濒。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執(zhí)行該參數(shù)所給出的shell命令锣咒,在執(zhí)行每一個命令之前侵状,都會給出提示,讓用戶來確定是否執(zhí)行毅整。
命令選項
-name 按照文件名查找文件趣兄。
-perm 按照文件權限來查找文件。
-prune 使用這一選項可以使find命令不在當前指定的目錄中查找悼嫉,如果同時使用-depth選項艇潭,那么-prune將被find命令忽略。
-user 按照文件屬主來查找文件。
-group 按照文件所屬的組來查找文件蹋凝。
-mtime -n +n 按照文件的更改時間來查找文件鲁纠, - n表示文件更改時間距現(xiàn)在n天以內,+ n表示文件更改時間距現(xiàn)在n天以前鳍寂。find命令還有-atime和-ctime 選項改含,但它們都和-m time選項。
-nogroup 查找無有效所屬組的文件迄汛,即該文件所屬的組在/etc/groups中不存在捍壤。
-nouser 查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在鞍爱。
-newer file1 ! file2 查找更改時間比文件file1新但比文件file2舊的文件鹃觉。
-type 查找某一類型的文件,諸如:
b - 塊設備文件睹逃。
d - 目錄帜慢。
c - 字符設備文件。
p - 管道文件唯卖。
l - 符號鏈接文件。
f - 普通文件躬柬。
-size n:[c] 查找文件長度為n塊的文件拜轨,帶有c時表示文件長度以字節(jié)計。-depth:在查找文件時允青,首先查找當前目錄中的文件橄碾,然后再在其子目錄中查找。
-fstype:查找位于某一類型文件系統(tǒng)中的文件颠锉,這些文件系統(tǒng)類型通撤ㄉ可以在配置文件/etc/fstab中找到,該配置文件中包含了本系統(tǒng)中有關文件系統(tǒng)的信息琼掠。
-mount:在查找文件時不跨越文件系統(tǒng)mount點拒垃。
-follow:如果find命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件瓷蛙。
-cpio:對匹配的文件使用cpio命令悼瓮,將這些文件備份到磁帶設備中。
另外,下面三個的區(qū)別:
-amin n 查找系統(tǒng)中最后N分鐘訪問的文件
-atime n 查找系統(tǒng)中最后n*24小時訪問的文件
-cmin n 查找系統(tǒng)中最后N分鐘被改變文件狀態(tài)的文件
-ctime n 查找系統(tǒng)中最后n*24小時被改變文件狀態(tài)的文件
-mmin n 查找系統(tǒng)中最后N分鐘被改變文件數(shù)據的文件
-mtime n 查找系統(tǒng)中最后n*24小時被改變文件數(shù)據的文件
使用實例
實例1:查找指定時間內修改過的文件
find -atime -2
實例2:根據關鍵字查找
find . -name "*.log"
在當前目錄查找 以.log結尾的文件艰猬。 ". "代表當前目錄
實例3:按照目錄或文件的權限來查找文件
find /opt/soft/test/ -perm 777
查找/opt/soft/test/目錄下 權限為 777的文件
實例4:按類型查找
find . -type f -name "*.log"
查找當目錄横堡,以.log結尾的普通文件
實例5:查找當前所有目錄并排序
find . -type d | sort
實例6:按大小查找文件
查找當前目錄大于1K的文件
find . -size +1000c -printfind
find命令之exec
參數(shù)后面跟的是command命令,它的終止是以;為結束標志的冠桃,所以這句命令后面的分號是不可缺少的命贴,考慮到各個系統(tǒng)中分號會有不同的意義,所以前面加反斜杠
實例1:ls -l命令放在find命令的-exec選項中
find . -type f -exec ls -l {} \;
find命令匹配到了當前目錄下的所有普通文件,并在-exec選項中使用ls -l命令將它們列出
實例2:在目錄中查找更改時間在n日以前的文件并刪除它們
find . -type f -mtime +14 -exec rm {} \;
find命令之xargs
在使用 find命令的-exec選項處理匹配到的文件時胸蛛, find命令將所有匹配到的文件一起傳遞給exec執(zhí)行污茵。但有些系統(tǒng)對能夠傳遞給exec的命令長度有限制,這樣在find命令運行幾分鐘之后胚泌,就會出現(xiàn)溢出錯誤省咨。錯誤信息通常是“參數(shù)列太長”或“參數(shù)列溢出”。這就是xargs命令的用處所在玷室,特別是與find命令一起使用零蓉。
find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部穷缤,不像-exec選項那樣敌蜂。這樣它可以先處理最先獲取的一部分文件,然后是下一批津肛,并如此繼續(xù)下去章喉。
在有些系統(tǒng)中,使用-exec選項會為處理每一個匹配到的文件而發(fā)起一個相應的進程身坐,并非將匹配到的文件全部作為參數(shù)一次執(zhí)行秸脱;這樣在有些情況下就會出現(xiàn)進程過多,系統(tǒng)性能下降的問題部蛇,因而效率不高摊唇; 而使用xargs命令則只有一個進程。另外涯鲁,在使用xargs命令時巷查,究竟是一次獲取所有的參數(shù),還是分批取得參數(shù)抹腿,以及每一次獲取參數(shù)的數(shù)目都會根據該命令的選項及系統(tǒng)內核中相應的可調參數(shù)來確定岛请。