一.find介紹:
find是Linxu中一個十分常用的文件查找工具,其工作原理是通過遍歷啟起始路徑下文件層級結構完成的,其特點是查找速度慢,能做到實時查找和精確查找。
二.使用方法:
find start_path search_conditions action |
1.statr_path:所要查找的文件的起始位置,默認是當前目錄
2.earch_conditions:
(1)根據文件名進行查找:
-name filename :根據文件名進行查找,filename支持glob風格的文件名通配
-iname filename:根據文件名進行查找,filename支持glob風格的文件名通配,不過忽略文件名中的大小寫
使用示例:查找當前目錄下以txt結尾的所有文件
find ./ -name "*.txt" -print |
(2)根據文件的所屬關系進查找
-user username:查找屬主為username的文件
-group groupname:查找數組為group的文件
-uid UID:查找屬主為UID的文件
-gid GID:查找屬組為GID的文件
-nouser :查找沒有屬主的文件
-nogroup:查找沒有數組的文件
使用示例:查找/etc下沒有屬主的文件
find /etc -nouser -print |
(3)根據文件類型進行查找
-type filetype
filetype有:
f:普通文件 |
b:塊設備文件 |
d:目錄 |
p:管道文件 |
l:鏈接文件 |
c:字符設備文件 |
s:套接字文件 |
使用示例:查找/etc目錄下沒有屬主的普通文件
find /etc -nouser -type f -print |
(4).根據文件的大小來查找
-size {+|-}#{K,M,G},可以以K,M,G為單位進行查找
#:查找大小為#的文件
+#:查找文件大小至少為#的文件
-#:查找文件大小至多為#的文件
使用示例:查找/etc下沒有屬組,大小為至少10k的普通文件
find /etc -nogroup -size +10k -type f -print |
(5)根據時間戳進行查找
-atime day:查找在day天之內被訪問過的文件
-ctime day:查找day天之內有改變的文件
-mtime day:查找day天之內有修改的文件
-amin min:查找min分鐘之內被訪問過的文件
-cmin min:查找min分鐘之內被訪問過的文件
-mmin min:查找min分鐘之內被修改過的文件
使用示例:查找/etc下一個月之內被訪問過,沒有屬主,大小為至多1M的普通文件
find /etc -atime 30 -nouser -size -1M -type f -print |
(6)根據文件的權限進行查找
-perm {/|-} mode
mode:查找文件的權限為mode的文件,例如111查找屬,屬組,其他用戶都有執行權限的文件
/mode:查找任何一類用戶滿足其中任何一個權限位的文件,例如/111,查找屬主,屬組,或其他用戶之中任意一個具有執行權限的文件
-mode:查找所有用戶的所有位都滿足的文件,例如-111,查找權限小于111的文件,即每一位用戶權限都不能超過1的文件
使用示例:查找/etc下一個月之內被訪問過,大小為至多1M,屬主,屬組,或其他用戶其中之一能執行的文件
find /etc -atime 30 -size -1M -perm /111 -print |
(6).組合測試
-a : 與運算邏輯,默認也是這種組合邏輯
-o:或運算邏輯
-not,!:非運算邏輯
使用示例:查找/etc中沒有屬主或者至少為1M的文件
find /etc -nouser -o -size +1M -print |
(7)根據文件是否為空來查找
-empty
使用示例:查找/etc下的空文件
find /etc -empty?。穑颍椋睿?/span> |
3.action:默認為打印查找到的文件名,也可以通過 -exec command {} \的方式對查找到的文件進行指定操作
-print:打印查找到的文件名,也是默認處理方式
-ls :將查找到的文件使用ls列出
-exec command {} \ :對查找到的每個文件執行command命令
當所要執行的命令要接受較長的命令參數時,要通過管道送給xargs來執行,例如 find ./ -name "*.txt|xarg?。欤蟆。臁。琛}?。?/span>
使用示例:將/etc下所有以.txt結尾的文件找到并刪除之
find /etc -name "*.txt"?。?xarg rm -f {} \ |
原創文章,作者:zhangbao,如若轉載,請注明出處:http://www.www58058.com/56766