find 命令可以根據給定的路勁和表達式查找指定的文件或目錄。find 參數選項很多,並且支持正則表達式,功能強大。 和管道結合使用可以實現復雜的功能,是系統管理和普通用戶必須掌握的命令。
一、find 命令格式說明
path find命令查找的目錄路徑。
-print find命令將匹配到的文件輸出到標准輸出。
-exec find 命令對匹配的文件執行該參數所給出的Shell命令。
-ok 和 -exec的作用相同,只是更安全,在執行每個命令之前,都會給出提示,讓用戶來確定是否執行。
二、find命令常用參數說明
-name 按照文件名查找文件
-cpio: 對匹配的文件使用 cpio 命令,將這些文件備份到磁帶設備中
-prune 按照文件權限進行查找文件
-user 按照文件屬主來查找文件
-group 按照文件所屬的組來查找文件
-mtime -n +n 按照文件更改的時間來查找文件,-n 表示更改時間距現在 n 天以內,+n 表示更改時間距現在 n 天以前
-nogroup 查找無效所屬組的文件
-nouser 查找無效屬主文件
-newer file1 !file2 查找更改時間比 file1 新但比 file2 舊的文件
-follow 如果 find 查找的為鏈接文件,就跟蹤至連接所指向的文件
-mount 在查找文件時不跨越文件系統 mount 點
-fstype 查找位於某一類型文件系統中的文件
-depth 在查找文件時,首先查找當前目錄中的文件,然后再在其子目錄中查找
-size n 查找文件長度為 n 塊的文件,帶有 c 時表示文件長度以字節計
-type 查找某一類型的文件
-amin n 查找系統中最后 n 分鍾訪問的文件
-atime n 查找系統中最后 n*24 小時訪問的文件
-cmin n 查找系統中最后 n 分鍾被改變文件狀態的文件
-ctime n 查找系統中最后 n*24 小時被改變文件狀態的文件
-mmin n 查找系統中最后 n 分鍾被改變文件數據的文件
-mtime n 查找系統中最后 n*24 小時被改變文件數據的文件
-empty 查找系統中空白的文件或目錄,或目錄中沒有子目錄的文件夾
-false 查找系統中總是錯誤的文件
-gid n 查找系統中文件數字組ID為 n 的文件
-daystart 測試系統中從今天開始 24 小時以內的文件,用法類似於 -amin
-help 顯示命令摘要(幫助)
-maxdepth levels 在某個層次目錄中按照遞減方法查找
三、find基本用法
find 如不加任何參數,表示查找當前路徑下的所有文件和目錄
find -print 將結果打印到標准輸出
find /data/log 指定路勁查找
find / -name "abc.txt" 在系統中查找 abc.txt 如果執行完畢沒有找到,則說明系統中不存在該文件
find 還支持正則表達式查找
find /data/logs -mame "*.log" -type f -printf 查找符合指定字符串的文件
find . -name "[0-9]" -type f 查找以數字開頭的文件
find / -mtime -1 |head 查找系統內最近24小時修改過的文件
find / -mmin -15|head 查找系統內最近15 分鍾修改過的文件
find 使用 type 選項可以查找特定的文件類型,常見類型如下
b 塊設備文件
d 目錄
c 字符設備文件
p 管道文件
l 符號鏈接文件
f 普通文件
find . -type d 查找當前路徑中的所有目錄
find . -type f 查找當前路徑中的所有文件
find . -type l 查找當前路徑中的所有符號鏈接文件
更多實例將在使用中不斷補充.....
四、xargs命令
find命令可以把匹配到的文件傳遞給 xargs 命令執行,在使用 find 命令的 -exec 選項處理匹配到的文件時,find將所有匹配到的文件一起傳遞給 exec 執行。由於有些系統對能夠傳遞給 exec 的命令長度有限制,這樣會引起溢出錯誤。這時可以使用 xargs 命令。
find / type f -print | xargs file 查找系統中的每一個普通文件,並用 file 命令來測試它們分別屬於哪一類文件。
find . -type f -name "\.log" -print | xargs rm 查找當前目錄下的 .log 文件,並刪除 。
find . -type f -exec ls -l {} \; 用 ls -l 列出所有匹配到的文件。
find logs -type f -mtime +5 -exec rm {} \; 查找 log 中更改時間在 5 天前的文件並刪除。
find logs -type f -ok rm {} \; 查找 log中的所有普通文件並在刪除前確認。
find . -type f -name "\.log" -print | gerp "node" 查找當前目錄下的 .log 文件,並從查找結果中篩選出帶有 node 字符串的文件 。