使用name選項:
#檔案名稱選項是find指令最常用的選項,或是單獨使用該選項,或和其他選項一起使用。可以使用某種文件名模式來匹配文件,記住要用引號將文件名模式引起來。不管目前路徑是什麼,如果想要在自己的根目錄$HOME中查找文件名符合*.log的文件,使用~作為 'pathname'參數,波浪號~代表了當前用戶的家目錄。
尋找目前登入使用者家目錄的.log檔案:
#> find ~ -name "*.log"
尋找目前目錄下以大寫字母開頭的檔案:
#> find . -name "[A-Z]*"
尋找/etc目錄下以sys開頭的檔案:
#> find /etc -name "sys*"
詢目前目錄下以大寫字母開頭 3位數字的.png
的圖片
> find . -name "[A-Z]*[0-9][0-9][0-9].png"
用perm選項:
#依照檔案權限模式用-perm選項,按檔案權限模式來找出檔案的話。最好使用八進制的權限表示法。如在目前目錄下尋找文件權限位為755的文件,即文件屬主可以讀取、寫入、執行,其他使用者可以讀取、執行的文件,可以用
> find . -perm 755
find -perm -mode
, 表示mode中轉換成二進位的1在檔案權限位裡面必須匹配,例如mode=644那麼轉換成二進位為110 100 100,而被尋找的檔案的權限位也可以被轉換成一個二進制數,兩者在位上為1的部分必須完全匹配,而0則不管。例如被尋找的檔案的權限為轉換成二進制數是111 111 111那麼這個例如被匹配,而假如是100 100 100那麼則不會匹配。所以這個'-'的作用歸結起來就是匹配比mode權限更充足的文件(找不到什麼詞語來形容了)
忽略某個目錄:
如果在尋找文件時希望忽略某個目錄,因為你知道那個目錄中沒有你所要查找的文件,那麼可以使用-prune選項來指出需要忽略的目錄。在使用-prune選項時要當心,因為如果你同時使用了-depth選項,那麼-prune選項就會被find指令忽略。如果希望在目前目錄下查找文件,但不希望在./bin目錄下查找,可以用
> find . -path "./bin" -prune -o -print
避開多個資料夾:
> find . \( -path "./bin" -o -path "./doc" \) -prune -o -print
圓括號表示表達式的結合。 \表示引用,即指示shell不對後面的字元作特殊解釋,而留給 find
指令去解釋其意義。
找出某一確定文件,-name等選項加在-o 之後:
> find . \( -path "./bin" -o -path "./doc" \) -prune -o-name "*.txt" -print
<span style="background-color: initial;">user nouser</span>
和 <span style="background-color: initial;">#group nogroup</span>
在目前目錄中尋找所屬主是root
的檔案
> find . -user root
找出目前目錄所屬主被刪除的檔案:
> find . -nouser
在目前目錄中尋找所屬群組是root
的檔案:
> find . -group root
找出目前目錄所屬群組已刪除的檔案:
> find . -nogroup
按時間尋找檔案
#尋找更改時間在7日以內的檔案:
#> find . -mtime -7
找出更改時間在7日以前的檔案:
> find . mtime +7
找出比某個檔案新或舊的檔案
尋找更改時間比檔案a.log新但比檔案b.log舊的檔案:
#> find . -newer a.log ! -newer b.log
找出更改時間在比a.log檔案新的檔案:
#> find . -newer a.log
type選項
在/etc目錄下尋找所有的目錄:
#> find /etc -type d
在/etc目錄下尋找所有的符號連結檔:
#> find /etc -type l
size參數
可以依照文件長度來尋找文件,這裡所指的文件長度既可以用區塊(block)來計量,也可以用位元組來計量。以位元組計量檔案長度的表達形式為N c;以區塊計量檔案長度只用數字表示即可。在依照檔案長度尋找檔案時,一般會使用這種以位元組表示的檔案長度,在檢視檔案系統的大小,因為這時使用區塊來計量會更容易轉換。
在目前目錄下尋找檔案長度大於100M位元組的檔案:
> find . -size +100M
使用depth選項:
#在使用find命令时,可能希望先匹配所有的文件,再在子目录中查找。使用depth选项就可以使find命令这样做。这样做的一个原因就是,当在使用find命令向磁带上备份文件系统时,希望首先备份所有的文件,其次再备份子目录中的文件。
先输出子内容,再输出上层目录内容,直到最顶层:
> find test -depth! -empty test/test1/test2/test3 test/test1/test2 test/test1 test
先输出顶层目录,再输出下面的各层子目录内容,直到最低层:
> find test ! -empty test test/test1 test/test1/test2 test/test1/test2/test3
mount选项:
在当前的文件系统中查找文件(不进入其他文件系统),可以使用find命令的mount选项。
从当前目录开始查找位于本文件系统中文件名以.txt结尾的文件:
> find . -mount -name "*.txt"-print
以上是Linux中find指令可用的選項及參數的詳細內容。更多資訊請關注PHP中文網其他相關文章!