首頁 >php教程 >PHP开发 >Linux find 指令用法總結

Linux find 指令用法總結

高洛峰
高洛峰原創
2016-12-14 17:14:371368瀏覽

find 指令算是Linux下最常用的一個指令之一了,這裡有一些常用用法的總結。

1. 依檔案名稱搜尋。 
搜尋目前目錄下所有的以txt結尾的檔案。第二個指令用了 -exec 參數,可以在對所有尋找的檔案執行一種操作。注意格式,空格和;一個都不能少。 -name 的參數可以用正規表示式,例如第二個範例

find ./* -name "*.txt"
find ./* -name "[ab]*.py"
find ./* -name "*.pyc" -exec rm {} ;

2. 依修改時間找出 
尋找當當天目錄下當天修改過的檔案。 -1 表示一天前修改過的文件。 -2表示前兩天。 find ./* -mtime n n表示,對檔案資料的最近一次修改是在 n*24 小時之前。 +n 指n天以前,-n指n天以內(對 -mmin 是指n分鐘), n 表示第n天,他們的意思都是不同的,注意區分。

find ./* -mtime  60 -type f -print 
find ./* -mmin -60 -type f -print
find ./* -mmin +60 -type f -print

3. 檔案狀態改變和上個參數相比,基本道理都是一樣的,只不過這個參數的意思是檔案的權限被修改。改內容和改文件的權限是不一樣的,這裡指的是更改的是文件inode的數據,例如文件的權限,所屬人等等資訊。 cmin 表示近60分鐘內被改過權限,ctime 表示近幾天內被修改過。

find ./* -cmin +60 -type f -print

find ./* -ctime -60 -type f -print

依照文件的所屬group和所屬user 來找出-user 和-nouser4 
依照文件的所屬group和所屬user 來找出-user 和-nouser 最後一個指令找出目前已刪除的系統使用者的所有文件, - group 和- nogroup 的功能類似。

find ./* -user fox
find ./* -nouser


find 避開某目錄,避開多個目錄。其中 -a 表示 and 的意思,-o 表示or 的意思。

find test -path "test/test4" -prune -o -print
find test ( -path test/test4 -o -path test/test3 ) -prune -o -print 
find . ( -path o -path ./framework -o -path ./utils -o -path ./config ) -prune -o -name "Bigger.*" -print


-perm 選項指檔案的存取權限

find - perm 755 -print


實用inode 來找出檔案編號。可以如下面所示在find指令中指定inode編號。在此,find指令用inode編號重新命名了一個檔案。你也可以透過rm來刪除那個特殊的檔案。

ls -i1 test*
16187429 test-file-name
16187430 test-file-name
find -inum 16187430 -exec mv {) new-test-file-name ; 5個檔案

find . -type f -exec ls -s {} ; | sort -n -r | head -5

下面的指令刪除大於100M的*.zip檔。

find / -type f -name *.zip -size +100M -exec rm -i {} ;

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn