Linux-find命令
概述
find命令用來在指定目錄下查找文件。
任何位于參數之前的字符串都將被視為欲查找的目錄名。
如果使用該命令時,不設置任何參數,則find命令將在當前目錄下查找子目錄與文件,并且將查找到的子目錄和文件全部進行顯示。
語法
find (選項) (參數)選項
-amin<分鐘>:查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算;
-anewer<參考文件或目錄>:查找其存取時間較指定文件或目錄的存取時間更接近現在的文件或目錄;
-atime<24小時數>:查找在指定時間曾被存取過的文件或目錄,單位以24小時計算;
-cmin<分鐘>:查找在指定時間之時被更改過的文件或目錄;
-cnewer<參考文件或目錄>查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄;
-ctime<24小時數>:查找在指定時間之時被更改的文件或目錄,單位以24小時計算;
-daystart:從本日開始計算時間; -depth:從指定目錄下最深層的子目錄開始查找;
-expty:尋找文件大小為0 Byte的文件,或目錄下沒有任何子目錄或文件的空目錄;
-exec<執行指令>:假設find指令的回傳值為True,就執行該指令;
-false:將find指令的回傳值皆設為False;
-fls<列表文件>:此參數的效果和指定“-ls”參數類似,但會把結果保存為指定的列表文件;
-follow:排除符號連接;
-fprint<列表文件>:此參數的效果和指定“-print”參數類似,但會把結果保存成指定的列表文件;
-fprint0<列表文件>:此參數的效果和指定“-print0”參數類似,但會把結果保存成指定的列表文件;
-fprintf<列表文件><輸出格式>:此參數的效果和指定“-printf”參數類似,但會把結果保存成指定的列表文件;
-fstype<文件系統類型>:只尋找該文件系統類型下的文件或目錄; -gid<群組識別碼>:查找符合指定之群組識別碼的文件或目錄;
-group<群組名稱>:查找符合指定之群組名稱的文件或目錄;
-help或——help:在線幫助;
-ilname<范本樣式>:此參數的效果和指定“-lname”參數類似,但忽略字符大小寫的差別;
-iname<范本樣式>:此參數的效果和指定“-name”參數類似,但忽略字符大小寫的差別;
-inum:查找符合指定的inode編號的文件或目錄;
-ipath<范本樣式>:此參數的效果和指定“-path”參數類似,但忽略字符大小寫的差別;
-iregex<范本樣式>:此參數的效果和指定“-regexe”參數類似,但忽略字符大小寫的差別;
-links<連接數目>:查找符合指定的硬連接數目的文件或目錄;
-iname<范本樣式>:指定字符串作為尋找符號連接的范本樣式;
-ls:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出;
-maxdepth<目錄層級>:設置最大目錄層級;
-mindepth<目錄層級>:設置最小目錄層級;
-mmin<分鐘>:查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算;
-mount:此參數的效果和指定“-xdev”相同;
-mtime<24小時數>:查找在指定時間曾被更改過的文件或目錄,單位以24小時計算;
-name<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-newer<參考文件或目錄>:查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄;
-nogroup:找出不屬于本地主機群組識別碼的文件或目錄;
-noleaf:不去考慮目錄至少需擁有兩個硬連接存在;
-nouser:找出不屬于本地主機用戶識別碼的文件或目錄;
-ok<執行指令>:此參數的效果和指定“-exec”類似,但在執行指令之前會先詢問用戶,若回答“y”或“Y”,則放棄執行命令;
-path<范本樣式>:指定字符串作為尋找目錄的范本樣式; -perm<權限數值>:查找符合指定的權限數值的文件或目錄;
-print:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式為每列一個名稱,每個名稱前皆有“./”字符串;
-print0:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式為全部的名稱皆在同一行;
-printf<輸出格式>:假設find指令的回傳值為Ture,就將文件或目錄名稱列出到標準輸出。格式可以自行指定;
-prune:不尋找字符串作為尋找文件或目錄的范本樣式;
-regex<范本樣式>:指定字符串作為尋找文件或目錄的范本樣式;
-size<文件大小>:查找符合指定的文件大小的文件;
-true:將find指令的回傳值皆設為True;
-type<文件類型>:只尋找符合指定的文件類型的文件;
-uid<用戶識別碼>:查找符合指定的用戶識別碼的文件或目錄;
-used<日數>:查找文件或目錄被更改之后在指定時間曾被存取過的文件或目錄,單位以日計算;
-user<擁有者名稱>:查找符和指定的擁有者名稱的文件或目錄;
-version或——version:顯示版本信息;
-xdev:將范圍局限在先行的文件系統中;
-xtype<文件類型>:此參數的效果和指定“-type”參數類似,差別在于它針對符號連接檢查。
參數
起始目錄:查找文件的起始目錄。
實例
根據文件或者正則表達式進行匹配
列出當前目錄及子目錄下所有文件和文件夾
find .在/home目錄下查找以.txt結尾的文件名
find /home -name "*.txt"同上,但忽略大小寫
find /home -iname "*.txt"當前目錄及子目錄下查找所有以.txt和.pdf結尾的文件
find . \( -name "*.txt" -o -name "*.pdf" \)或
find . -name "*.txt" -o -name "*.pdf"匹配文件路徑或者文件
find /usr/ -path "*local*"基于正則表達式匹配文件路徑
find . -regex ".*\(\.txt\|\.pdf\)$"同上,但忽略大小寫
find . -iregex ".*\(\.txt\|\.pdf\)$"否定參數
找出/home下不是以.txt結尾的文件
find /home ! -name "*.txt"按照文件類型進行搜索
find . -type 類型參數類型參數列表:
- f 普通文件
- l 符號連接
- d 目錄
- c 字符設備
- b 塊設備
- s 套接字
- p Fifo
基于目錄深度搜索
向下最大深度限制為3
find . -maxdepth 3 -type f搜索出深度距離當前目錄至少2個子目錄的所有文件
find . -mindepth 2 -type f根據文件時間戳進行搜索
find . -type f 時間戳UNIX/Linux文件系統每個文件都有三種時間戳:
訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。
修改時間(-mtime/天,-mmin/分鐘):文件最后一次修改時間。
- 變化時間(-ctime/天,-cmin/分鐘):文件數據元(例如權限等)最后一次修改時間。
搜索最近七天內被訪問過的所有文件
find . -type f -atime -7搜索恰好在七天前被訪問過的所有文件
find . -type f -atime 7搜索超過七天內被訪問過的所有文件
find . -type f -atime +7搜索訪問時間超過10分鐘的所有文件
find . -type f -amin +10找出比file.log修改時間更長的所有文件
find . -type f -newer file.log根據文件大小進行匹配
find . -type f -size 文件大小單元文件大小單元:
- b —— 塊(512字節)
- c —— 字節
- w —— 字(2字節)
- k —— 千字節
- M —— 兆字節
- G —— 吉字節
搜索大于10KB的文件
find . -type f -size +10k搜索小于10KB的文件
find . -type f -size -10k搜索等于10KB的文件
find . -type f -size 10k刪除匹配文件
find . -type f -name "*.txt" -delete根據文件權限/所有權進行匹配
當前目錄下搜索出權限為777的文件
find . -type f -perm 777找出當前目錄下權限不是644的python文件
find . -type f -name "*.py" ! -perm 644找出當前目錄用戶xiaogongjiang擁有的所有文件
find . -type f -user xiaogongjiang找出當前目錄用戶組xiaogongjiang擁有的所有文件
find . -type f -group xiaogongjiang借助-exec選項與其他命令結合使用
找出當前目錄下所有root的文件,并把所有權更改為用戶tom
find . -type f -user root -exec chown tom {} \;上例中,{} 用于與-exec選項結合使用來匹配所有文件,然后會被替換為相應的文件名。
找出自己家目錄下所有的.txt文件并刪除
find $HOME/. -name "*.txt" -ok rm {} \;上例中,-ok和-exec行為一樣,不過它會給出提示,是否執行相應的操作。
查找當前目錄下所有.txt文件并把他們拼接起來寫入到all.txt文件中
find . -type f -name "*.txt" -exec cat {} \;> all.txt將30天前的.log文件移動到old目錄中
find . -type f -mtime +30 -name "*.log" -exec cp {} old \;找出當前目錄下所有.txt文件并以“File:文件名”的形式打印出來
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;因為單行命令中-exec參數中無法使用多個命令,以下方法可以實現在-exec之后接受多條命令
-exec ./text.sh {} \;搜索但跳出指定的目錄
查找當前目錄或者子目錄下所有.txt文件,但是跳過子目錄sk
find . -path "./sk" -prune -o -name "*.txt" -printfind其他技巧收集
要列出所有長度為零的文件
find . -empty 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Linux-find命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle-AWR性能报告解读
- 下一篇: Linux-diff和diff3命令