您好,登錄后才能下訂單哦!
怎么在Linux中使用find命令查找文件?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
語法:find + 目標目錄(路徑) + <選項> + 參數
常用選項列表
選項 | 含義 |
---|---|
-perm <權限數值> | 查找符合指定的權限數值的文件或目錄 |
-type <文件類型> | 只尋找符合指定的文件類型的文件 |
-name <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
-expty | 尋找文件大小為 0 Byte 的文件,或目錄下沒有任何子目錄或文件的空目錄 |
-ls | 假設find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出 |
-maxdepth <目錄層級> | 設置最大目錄層級 |
-mindepth <目錄層級> | 設置最小目錄層級 |
-exec <執行指令> | 假設find指令的回傳值為true,就執行該指令 |
-ok <執行指令> | 此參數的效果和指定-exec類似,但在執行指令之前會先詢問用戶,若回答y或Y,則放棄執行命令 |
示例
首先,給出演示使用的文件結構:
示例 1:查找當前目錄及其子目錄下所有文件和文件夾
find .
示例 2:在/testLinux
目錄下查找以.txt
結尾的文件名
// 需要書寫完整的路徑 find /tmp/cg/testLinux -name "*.txt"
示例 3:組合查找文件名以file1
開頭(與、或、非)file2
開頭的文件
/** * 組合查找語法: * -a 與(取交集) * -o 或(取并集) * -not 非(同 !) * ! 非(同 not) */ find . -name "file1*" -a -name "file2*" find . -name "file1*" -o -name "file2*" find . -name "file1*" -not -name "file2*" find . -name "file1*" ! -name "file2*"
示例 4:根據文件類型進行搜索
/** * 查找當前目錄及所有子目錄下的普通文件 */ find . -type f
示例 5:基于目錄深度進行搜索
/** * 限制最大深度為 3 */ find . -maxdepth 3 -type f /** * 限制最大深度為 2 */ find . -maxdepth 2 -type f
示例 6:基于文件權限進行搜索
/** * 搜索權限為 777 的文件 */ find . -type f -perm 777 /** * 搜索 .txt 格式且權限不為 777 的文件 */ find . -type f -name "*.txt" ! -perm 777
示例 7:借助-exec
命令,將當前目錄及子目錄下所有.txt
格式的文件以File:文件名
的形式打印出來
find . -type f -name "*.txt" -exec printf "File: %s\n" {} \;
示例 8:借助-exec
命令,將當前目錄及子目錄下所有 3 天前的.txt
格式的文件復制一份到old
目錄
find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;
文件類型參數列表
文件類型參數 | 含義 |
---|---|
f | 普通文件 |
l | 符號連接 |
d | 目錄 |
c | 字符設備 |
b | 塊設備 |
s | 套接字 |
p | Fifo |
文件大小單元列表
文件大小單元 | 含義 |
---|---|
b | 塊(512 字節) |
c | 字節 |
w | 字(2 字節) |
k | 千字節 |
M | 兆字節 |
G | 吉字節 |
選項列表
選項 | 含義 |
---|---|
-amin <分鐘> | 查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算 |
-atime <24小時數> | 查找在指定時間曾被存取過的文件或目錄,單位以 24 小時計算 |
-cmin <分鐘> | 查找在指定時間之時被更改過的文件或目錄 |
-ctime <24小時數> | 查找在指定時間之時被更改的文件或目錄,單位以 24 小時計算 |
-anewer <參考文件或目錄> | 查找其存取時間較指定文件或目錄的存取時間更接近現在的文件或目錄 |
-cnewer <參考文件或目錄> | 查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄 |
-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 | 在線幫助 |
-name <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
-iname <范本樣式> | 此參數的效果和指定-name參數類似,但忽略字符大小寫的差別 |
-ilname <范本樣式> | 此參數的效果和指定-lname參數類似,但忽略字符大小寫的差別 |
-inum <inode編號> | 查找符合指定的inode編號的文件或目錄 |
-path <范本樣式> | 指定字符串作為尋找目錄的范本樣式 |
-ipath <范本樣式> | 此參數的效果和指定-path參數類似,但忽略字符大小寫的差別 |
-iregex <范本樣式> | 此參數的效果和指定-regexe參數類似,但忽略字符大小寫的差別 |
-links <連接數目> | 查找符合指定的硬連接數目的文件或目錄 |
-ls | 假設find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出 |
-maxdepth <目錄層級> | 設置最大目錄層級 |
-mindepth <目錄層級> | 設置最小目錄層級 |
-mmin <分鐘> | 查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算 |
-mount | 此參數的效果和指定-xdev相同 |
-mtime <24小時數> | 查找在指定時間曾被更改過的文件或目錄,單位以 24 小時計算 |
-newer <參考文件或目錄> | 查找其更改時間較指定文件或目錄的更改時間更接近現在的文件或目錄 |
-nogroup | 找出不屬于本地主機群組識別碼的文件或目錄 |
-noleaf | 不去考慮目錄至少需擁有兩個硬連接存在 |
-nouser | 找出不屬于本地主機用戶識別碼的文件或目錄 |
-ok <執行指令> | 此參數的效果和指定-exec類似,但在執行指令之前會先詢問用戶,若回答y或Y,則放棄執行命令 |
-perm <權限數值> | 查找符合指定的權限數值的文件或目錄 |
假設find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出,格式為每列一個名稱,每個名稱前皆有./字符串 | |
-print0 | 假設find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出,格式為全部的名稱皆在同一行 |
-printf <輸出格式> | 假設find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出,格式可以自行指定 |
-prune | 不尋找字符串作為尋找文件或目錄的范本樣式 |
-regex <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
-size <文件大小> | 查找符合指定的文件大小的文件 |
-true | 將find指令的回傳值皆設為true |
-type <文件類型> | 只尋找符合指定的文件類型的文件 |
-uid <用戶識別碼> | 查找符合指定的用戶識別碼的文件或目錄 |
-used <日數> | 查找文件或目錄被更改之后在指定時間曾被存取過的文件或目錄,單位以日計算 |
-user <擁有者名稱> | 查找符和指定的擁有者名稱的文件或目錄 |
-version或——version | 顯示版本信息 |
-xdev | 將范圍局限在先行的文件系統中 |
-xtype <文件類型> | 此參數的效果和指定-type參數類似,差別在于它針對符號連接檢查 |
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。