Linux 文件查找(find)
生活随笔
收集整理的這篇文章主要介紹了
Linux 文件查找(find)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
find(選項)(參數)
find /home/eko/test -name "*.txt" -ok rm {} \;
find ./ -name "*.sh" -type f -exec cat {} \; > ./all.txt 將30天前的.log文件移動到old目錄中find . -type f -mtime +30 -name "*.log" -exec cp {} old \;
選項
-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編號>:查找符合指定的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; -typ<文件類型>:只尋找符合指定的文件類型的文件; -uid<用戶識別碼>:查找符合指定的用戶識別碼的文件或目錄; -used<日數>:查找文件或目錄被更改之后在指定時間曾被存取過的文件或目錄,單位以日計算; -user<擁有者名稱>:查找符和指定的擁有者名稱的文件或目錄; -version或——version:顯示版本信息; -xdev:將范圍局限在先行的文件系統中; -xtype<文件類型>:此參數的效果和指定“-type”參數類似,差別在于它針對符號連接檢查。eg
根據文件名或者正則查找
在/home目錄下查找以.txt結尾的文件名find /home -name "*.txt"同上,但忽略大小寫find /home -iname "*.txt"查找條件可以是多個? 支持 與 -a 、或 -o 、非 -not 查找
當前目錄及子目錄下查找所有以.txt和.pdf結尾的文件find . \( -name "*.txt" -o -name "*.pdf" \) 或 find . -name "*.txt" -o -name "*.pdf"根據正則表達式查找
find . -regex ".*\(\.txt\|\.pdf\)$"?
反條件查找
找出/home下不是以.txt結尾的文件 find /home ! -name "*.txt"?
根據文件類型進行查找
find . -type 類型參數類型參數列表:
- f?普通文件
- l?符號連接
- d?目錄
- c?字符設備
- b?塊設備
- s?套接字
- p?Fifo
?
根據目錄深度查找
find /home -maxdepth 層數找到/home2層目錄下.txt文件 find /home -maxdepth 2 -type f -name "*.txt"?
根據修改時間進行查找
找到/home目錄下 最近一天修改的文件find /home -type f -mtime -1- 訪問時間(-atime/天,-amin/分鐘):用戶最近一次訪問時間。
- 修改時間(-mtime/天,-mmin/分鐘):文件最后一次修改時間。
- 變化時間(-ctime/天,-cmin/分鐘):文件數據元(例如權限等)最后一次修改時間。
- 表示最近多少天修改的? ?+表示多少天之前修改的
?
根據文件大小查找
找到 /home 下大小超過10K的文件find /home -type f -size +10k -ls- b?—— 塊(512字節)
- c?—— 字節
- w?—— 字(2字節)
- k?—— 千字節
- M?—— 兆字節
- G?—— 吉字節
-表示小于? +表示大于
?
刪除匹配文件
刪除/home 下txt文件find /home -name "*.txt" -type f -delete?
對查找內容進行操作
找出 /home 目錄下權限為777的文件find /home -type f -perm 777 找到 /home/eko/test 文件夾下權限不為 777 的文件 然后改權限為 777find /home/eko/test ! -perm 777 -name "*.sh" -exec chmod 777 {} \;上例中,{}?用于與-exec選項結合使用來匹配所有文件,然后會被替換為相應的文件名。
將/home/eko/test 目錄下 屬主為eko的文件 屬主改為 rootfind /home/eko/test -user eko -exec chown root {} \; 刪除 /home/eko/test 目錄下 .txt文件find /home/eko/test -name "*.txt" -ok rm {} \;
上例中,-ok和-exec行為一樣,不過它會給出提示,是否執行相應的操作。
找到當前目錄下.sh文件 并把他們的內容輸出到當前目錄 all.txt文件下find ./ -name "*.sh" -type f -exec cat {} \; > ./all.txt 將30天前的.log文件移動到old目錄中find . -type f -mtime +30 -name "*.log" -exec cp {} old \;
?
轉載于:https://www.cnblogs.com/xiaoliwang/p/8993500.html
總結
以上是生活随笔為你收集整理的Linux 文件查找(find)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: input输入框的各种事件
- 下一篇: 人工智能与大数据开发的12个注意事项