linux 下 find 命令在目錄結構中搜索文件,並執行指定的操作。Linux 下 find 命令提供了相當多的查找條件,功能很強大。由於 find 具有強大的功能,所以它的選項也很多,其中大部分選項都值得我們花時間來了解一下。即使系統中包含有網絡文件系統(NFS),find 命令在該文件系統中同樣有效,只要你具有相應的權限。在運行一個非常消耗資源的find 命令時,很多人都傾向於把它放在后台執行,因為遍歷一個大的文件系統可能會話費很長的時間(譬如30G以上的文件系統)。當然你也可以把它調到前台執行,看着滿屏的數據不斷翻滾,然后你擺出一副深思的表情,是不是皺眉凝視···扯遠了。。
1.命令格式:
find pathname -options [-print -exec -ok]
2.命令功能:
用於在文件樹中查找文件,並作出相應的處理。
3.命令參數:
pathname: find 命令所查找的目錄路徑。譬如用 . 來表示當前目錄,用 / 來表示系統根目錄。
-print: find 命令將匹配的文件輸出到標准輸出。
-exec: find 命令對匹配的文件執行該參數所給出的 shell 命令,相應命令的形式為 ’command‘ {} \; ,注意 {} 和 “ \;” 之間的空格。
-ok: 和 -exec 的作用相同,只不過以一種更為安全的模式來執行該參數所給出的 shell 命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行功能。
4.命令選項:
-name 按照文件名查找文件
-perm 按照文件權限來查找文件
-prune 使用這一選項可以使find 命令不在當前指定的目錄中查找,如果同時使用 -depth 選項,那么 -prune 將被 find 命令忽略
-user 按照文件屬主來查找文件
-group 按照文件所屬的組來查找文件
-mtime -n +n 按照文件的更改時間來查找文件, - n 表示更改時間距現在 n 天以內, + 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 時表示文件長度以字節計。 -depth:在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找。
-fstype 查找位於某一類型文件系統中的文件,這些文件系統類型通常可以在配置文件 /etc/fstab 中找到,該配置文件中包含了本系統中有關文件系統的信息。
-mount 在查找文件是不跨越文件系統mount點
-follow 如果find 命令遇到符號鏈接文件,就跟蹤至鏈接所指向的文件。
-cpio 對匹配的文件使用cpio命令,將這些文件備份到磁帶設備中。
另外,下面三個的區別:
-amin n 查找系統中最后N分鍾訪問的文件
-atime n 查找系統中最后 n*24 小時訪問的文件
-cmin n 查找系統中最后 N 分鍾被改變文件狀態的文件
-ctime n 查找系統中最后 n*24小時被改變文件狀態的文件
-mmin n 查找系統中最后 N 分鍾被改變文件數據的文件
-mtime n 查找系統中最后 n*24 小時被改變文件數據的文件
5.使用實例:
實例1:查找指定時間內修改過的文件
命令:
find -atime -2 查找48小時內修改過的文件
實例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 組合命令,其實只要知道 find [PATH] [option] [argument] 就可以了, “| 管道” “sort” 命令隨時可以跟任何命令組合使用。
實例6:按大小查找文件
命令:
find . -size +1000c -print