Linux 命令find之查找文件的示例
在 Linux 命令中,find
用于在指定目錄下查找文件。任何位于參數(shù)之前的字符串都將被視為欲查找的目錄名,其支持按名稱查找、按正則表達式查找、按文件大小查找、按文件權(quán)限查找等多種查詢方式。如果在使用該命令時,不設(shè)置任何參數(shù),則find
命令將在當前目錄下查找子目錄與文件,并且將查找到的子目錄和文件全部進行顯示。
語法:find + 目標目錄(路徑) + <選項> + 參數(shù)
常用選項列表
選項 | 含義 |
---|---|
-perm <權(quán)限數(shù)值> | 查找符合指定的權(quán)限數(shù)值的文件或目錄 |
-type <文件類型> | 只尋找符合指定的文件類型的文件 |
-name <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
-expty | 尋找文件大小為 0 Byte 的文件,或目錄下沒有任何子目錄或文件的空目錄 |
-ls | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出 |
-maxdepth <目錄層級> | 設(shè)置最大目錄層級 |
-mindepth <目錄層級> | 設(shè)置最小目錄層級 |
-exec <執(zhí)行指令> | 假設(shè)find指令的回傳值為true,就執(zhí)行該指令 |
-ok <執(zhí)行指令> | 此參數(shù)的效果和指定-exec類似,但在執(zhí)行指令之前會先詢問用戶,若回答y或Y,則放棄執(zhí)行命令 |
示例
首先,給出演示使用的文件結(jié)構(gòu):
示例 1:查找當前目錄及其子目錄下所有文件和文件夾
find .
示例 2:在/testLinux
目錄下查找以.txt
結(jié)尾的文件名
// 需要書寫完整的路徑 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:根據(jù)文件類型進行搜索
/** * 查找當前目錄及所有子目錄下的普通文件 */ find . -type f
示例 5:基于目錄深度進行搜索
/** * 限制最大深度為 3 */ find . -maxdepth 3 -type f /** * 限制最大深度為 2 */ find . -maxdepth 2 -type f
示例 6:基于文件權(quán)限進行搜索
/** * 搜索權(quán)限為 777 的文件 */ find . -type f -perm 777 /** * 搜索 .txt 格式且權(quán)限不為 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
格式的文件復(fù)制一份到old
目錄
find . -type f -mtime +3 -name "*.txt" -exec cp {} old \;
文件類型參數(shù)列表
文件類型參數(shù) | 含義 |
---|---|
f | 普通文件 |
l | 符號連接 |
d | 目錄 |
c | 字符設(shè)備 |
b | 塊設(shè)備 |
s | 套接字 |
p | Fifo |
文件大小單元列表
文件大小單元 | 含義 |
---|---|
b | 塊(512 字節(jié)) |
c | 字節(jié) |
w | 字(2 字節(jié)) |
k | 千字節(jié) |
M | 兆字節(jié) |
G | 吉字節(jié) |
選項列表
選項 | 含義 |
---|---|
-amin <分鐘> | 查找在指定時間曾被存取過的文件或目錄,單位以分鐘計算 |
-atime <24小時數(shù)> | 查找在指定時間曾被存取過的文件或目錄,單位以 24 小時計算 |
-cmin <分鐘> | 查找在指定時間之時被更改過的文件或目錄 |
-ctime <24小時數(shù)> | 查找在指定時間之時被更改的文件或目錄,單位以 24 小時計算 |
-anewer <參考文件或目錄> | 查找其存取時間較指定文件或目錄的存取時間更接近現(xiàn)在的文件或目錄 |
-cnewer <參考文件或目錄> | 查找其更改時間較指定文件或目錄的更改時間更接近現(xiàn)在的文件或目錄 |
-daystart | 從本日開始計算時間 |
-depth | 從指定目錄下最深層的子目錄開始查找 |
-expty | 尋找文件大小為 0 Byte 的文件,或目錄下沒有任何子目錄或文件的空目錄 |
-exec <執(zhí)行指令> | 假設(shè)find指令的回傳值為true,就執(zhí)行該指令 |
-false | 將find指令的回傳值皆設(shè)為false |
-fls <列表文件> | 此參數(shù)的效果和指定-ls參數(shù)類似,但會把結(jié)果保存為指定的列表文件 |
-follow | 排除符號連接 |
-fprint <列表文件> | 此參數(shù)的效果和指定-print參數(shù)類似,但會把結(jié)果保存成指定的列表文件 |
-fprint0 <列表文件> | 此參數(shù)的效果和指定-print0參數(shù)類似,但會把結(jié)果保存成指定的列表文件 |
-fprintf <列表文件> <輸出格式> | 此參數(shù)的效果和指定-printf參數(shù)類似,但會把結(jié)果保存成指定的列表文件 |
-fstype <文件系統(tǒng)類型> | 只尋找該文件系統(tǒng)類型下的文件或目錄 |
-gid <群組識別碼> | 查找符合指定群組識別碼的文件或目錄 |
-group <群組名稱> | 查找符合指定群組名稱的文件或目錄 |
-help或——help | 在線幫助 |
-name <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
-iname <范本樣式> | 此參數(shù)的效果和指定-name參數(shù)類似,但忽略字符大小寫的差別 |
-ilname <范本樣式> | 此參數(shù)的效果和指定-lname參數(shù)類似,但忽略字符大小寫的差別 |
-inum <inode編號> | 查找符合指定的inode編號的文件或目錄 |
-path <范本樣式> | 指定字符串作為尋找目錄的范本樣式 |
-ipath <范本樣式> | 此參數(shù)的效果和指定-path參數(shù)類似,但忽略字符大小寫的差別 |
-iregex <范本樣式> | 此參數(shù)的效果和指定-regexe參數(shù)類似,但忽略字符大小寫的差別 |
-links <連接數(shù)目> | 查找符合指定的硬連接數(shù)目的文件或目錄 |
-ls | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出 |
-maxdepth <目錄層級> | 設(shè)置最大目錄層級 |
-mindepth <目錄層級> | 設(shè)置最小目錄層級 |
-mmin <分鐘> | 查找在指定時間曾被更改過的文件或目錄,單位以分鐘計算 |
-mount | 此參數(shù)的效果和指定-xdev相同 |
-mtime <24小時數(shù)> | 查找在指定時間曾被更改過的文件或目錄,單位以 24 小時計算 |
-newer <參考文件或目錄> | 查找其更改時間較指定文件或目錄的更改時間更接近現(xiàn)在的文件或目錄 |
-nogroup | 找出不屬于本地主機群組識別碼的文件或目錄 |
-noleaf | 不去考慮目錄至少需擁有兩個硬連接存在 |
-nouser | 找出不屬于本地主機用戶識別碼的文件或目錄 |
-ok <執(zhí)行指令> | 此參數(shù)的效果和指定-exec類似,但在執(zhí)行指令之前會先詢問用戶,若回答y或Y,則放棄執(zhí)行命令 |
-perm <權(quán)限數(shù)值> | 查找符合指定的權(quán)限數(shù)值的文件或目錄 |
假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出,格式為每列一個名稱,每個名稱前皆有./字符串 | |
-print0 | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出,格式為全部的名稱皆在同一行 |
-printf <輸出格式> | 假設(shè)find指令的回傳值為ture,就將文件或目錄名稱列出到標準輸出,格式可以自行指定 |
-prune | 不尋找字符串作為尋找文件或目錄的范本樣式 |
-regex <范本樣式> | 指定字符串作為尋找文件或目錄的范本樣式 |
-size <文件大小> | 查找符合指定的文件大小的文件 |
-true | 將find指令的回傳值皆設(shè)為true |
-type <文件類型> | 只尋找符合指定的文件類型的文件 |
-uid <用戶識別碼> | 查找符合指定的用戶識別碼的文件或目錄 |
-used <日數(shù)> | 查找文件或目錄被更改之后在指定時間曾被存取過的文件或目錄,單位以日計算 |
-user <擁有者名稱> | 查找符和指定的擁有者名稱的文件或目錄 |
-version或——version | 顯示版本信息 |
-xdev | 將范圍局限在先行的文件系統(tǒng)中 |
-xtype <文件類型> | 此參數(shù)的效果和指定-type參數(shù)類似,差別在于它針對符號連接檢查 |
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Linux+Nginx+Php架設(shè)高性能WEB服務(wù)器
來自wiki.nginx.org的關(guān)于Nginx的介紹2009-05-05Windows Apache2.4 VC9(ApacheHaus)詳細安裝配置教程
這篇文章主要介紹了Windows Apache2.4 VC9(ApacheHaus)詳細安裝配置教程,需要的朋友可以參考下2017-09-09linux系統(tǒng)中設(shè)置定時任務(wù)的實現(xiàn)方式
在SpringBoot中設(shè)置定時任務(wù),需要使用@EnableScheduling注解和@Scheduled注解,配合cron表達式,在Linux系統(tǒng)中,使用crontab工具可設(shè)置系統(tǒng)級的定時任務(wù),首先需要創(chuàng)建執(zhí)行腳本,并賦予執(zhí)行權(quán)限,然后通過crontab?-e進入編輯界面2024-10-10IO多路復(fù)用之select全面總結(jié)(必看篇)
下面小編就為大家?guī)硪黄狪O多路復(fù)用之select全面總結(jié)(必看篇)。小編覺得挺不錯的?,F(xiàn)在就分享給大家。也給大家做個參考。一起跟隨小編過來看看吧2016-12-12