linux尋找命令很多,其中最複雜和常用的就是find命令。
which 查看可執行檔的位置
whereis 查看檔案的位置
locate 配合資料庫查看檔案位置
find 實際搜尋硬碟查詢檔案名稱
find命令的一般格式:
find pathname -options [-print -exec -ok ...]
pathname: find命令所尋找的目錄路徑。例如用.來表示目前的目錄,用/來表示系統根目錄。
-print: find命令將匹配的檔案輸出到標準輸出。
-exec: find命令對匹配的檔案執行該參數所給出的shell命令。相應命令的形式為'command' { } ;,注意{ }和;之間的空格。
-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓使用者來確定是否執行。
find選項和樣本說明:
-name 按照檔案名稱尋找檔案。
-type 尋找某一類型的檔案,諸如:
b - 塊裝置檔案。
d - 目錄。
c - 字元裝置檔案。
p - 管道檔案。
l - 符號連結檔案。
f - 普通檔案。
-perm 按照檔案許可權來尋找檔案。
-prune 使用這一選項可以使find命令不在當前指定的目錄中尋找,如果同時使用-depth選項,那麼-prune將被find命令忽略。
-user 按照檔案屬主來尋找檔案。
-nouser 尋找無有效屬主的檔案,即該檔案的屬主在/etc/passwd中不存在。
-group 按照檔案所屬的組來尋找檔案。
-nogroup 尋找無有效所屬組的檔案,即該檔案所屬的組在/etc/groups中不存在。
-mtime -n +n 按照檔案的更改時間來尋找檔案, - n表示檔案更改時間距現在n天以內,+ n表示檔案更改時間距現在n天以前。
-atime -n +n 按檔案訪問時間來查,-n指n天以內,+n指n天以前
-ctime -n +n 按檔案建立時間來尋找檔案,-n指n天以內,+n指n天以前
-newer f1 !f2 #查更改時間比f1新但比f2舊的檔案
-size n:[c] 尋找檔案長度為n塊的檔案,帶有c時表示檔案長度以位元組計。
-depth:在尋找檔案時,首先尋找目前的目錄中的檔案,然後再在其子目錄中尋找。
-mount:在尋找檔案時不跨越檔案系統mount點。
-follow:如果find命令遇到符號連結檔案,就跟蹤至連結所指向的檔案。
-mindepth 指定最小深度
-maxdepth 指定最大深度
-empty 尋找空檔案
(1)尋找目前的目錄下檔案名稱,並忽略大小寫
find . -iname mysql.log
(2)在第二層子目錄和第四層子目錄之間尋找passwd檔案。
find / -mindepth 3 -maxdepth 5 -name passwd
(3)在find命令上尋找檔案上執行命令。
find . -iname mysql.log -exec md5sum {} \;
(4)尋找目前的目錄下5個最大的檔案
find . -type f -exec ls -s {} \; | sort -n -r | head -5
(5)尋找更改時間在5日內檔案
find /var/log -mtime -5
(6)尋找比某個檔案新或舊的檔案
find -newer log2012.log ! -newer log2017.log
(7)尋找目前的目錄下大於1M位元組檔案
find . -size +1000000c