指令解釋
find
-- 在目錄層次結構中搜尋檔案
-- linux下參數最多,最為複雜的指令
指令文法
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
常見示例
基于目錄深度的查找
find /etc/ -mindepth 1 -type f # 查找/etc目錄後至少1個子目錄深度的所有檔案
find /etc/ -maxdepth 1 -type f # 查找/etc目錄後至多1個子目錄深度的所有檔案
# 這招根據目錄成熟設定範圍很好用
基于檔案系統的查找
find / -mount # 這招可以屏蔽其他分區的檔案搜尋
基于最後一次通路時間查找
find / -amin -60 # 最後一次通路時間在60分鐘之内的檔案或者目錄
find / -atime -2 # 最後一次通路時間在24*2小時之内的檔案或者目錄
find / -mount -anewer /root/anaconda-ks.cfg # 最後一次通路時間最接近anaconda-ks.cfg檔案的最後一次通路時間的檔案
基于最後一次狀态更改時間查找
find / -cmin -60 # 最後一次狀态更改時間在60分鐘之内的檔案或者目錄
find / -ctime -2 # 最後一次狀态更改時間在24*2小時之内的檔案或者目錄
find / -mount -cnewer /root/anaconda-ks.cfg # 最後一次狀态更改時間最接近anaconda-ks.cfg檔案的最後一次通路時間的檔案
基于最後一次内容修改時間查找
find / -mmin -60 # 最後一次内容修改時間在60分鐘之内的檔案或者目錄
find / -mtime -2 # 最後一次内容修改時間在24*2小時之内的檔案或者目錄
find / -mount -newer /root/anaconda-ks.cfg # 最後一次内容修改時間最接近anaconda-ks.cfg檔案的最後一次通路時間的檔案
基于檔案大小查找
find / -mount -empty # 空目錄或者空檔案查找
find / -size -512b # 查找根目錄下面大小在512bit以内的檔案或者目錄
find / -size +1024c # 查找根目錄下面大于1024位元組的檔案或者目錄
find / -size 1024k # 查找根目錄下面等于1024K的檔案或者目錄
find / -size +500M # 查找根目錄下面大于500M的檔案或者目錄
find / -size +1G # 查找根目錄下面等于1G的檔案或者目錄
基于權限大小查找
find / -executable # 查找根目錄分區下面可執行的檔案或者可搜尋的目錄
find / -gid 0 # 查找超級使用者組所擁有的檔案或者目錄
find / -uid 0 # 查找超級使用者所擁有的檔案或者目錄
find / -group root # 查找root使用者組所擁有的檔案或者目錄
find / -nogroup root # 查找非root使用者組所擁有的檔案或者目錄
find / -nouser root # 查找非root使用者所擁有的檔案或者目錄
find / -perm 755 # 查找權限是755的檔案或者目錄
find / -perm 4755 # 查找權限屬主中帶有粘滞位的檔案或者目錄
find / -readable # 查找可讀權限的檔案或者目錄
find / writable # 查找可寫權限的檔案或者目錄
基于檔案名稱查找
find / -mount -name "file" # 查找根目錄分區下面名叫'file'的檔案或者目錄
find / -mount -iname "file" # 查找根目錄分區下面名叫'file'的檔案或者目錄,不區分大小寫
find / -mount -path "*net*" # 查找根目錄分區路勁中包含net的所有檔案或者目錄
find / -mount -ipath "*net*" # 查找根目錄分區路勁中包含net的所有檔案或者目錄,不區分大小寫
基于連結數查找
find / -mount -links 3 # 查找根目錄分區下面連結檔案數大于等于3的檔案或者目錄
基于inode值查找
find / -inum 101207402 # 查找根目錄下面inum是101207402值的檔案或者目錄
對檔案進行操作
find /tmp -type f -exec rm -rf {} \; # 對tmp下面的普通檔案執行删除操作;調用系統的rm指令
find /tmp -type -delete # 對tmp下面的普通檔案執行删除操作;
對比對檔案進行格式化輸出
find /etc -type f -printf 'File:\t %T+ %p\n' # 下次再研究了,printf很有用的一個參數
基于檔案類型查找
find / -type f # 查找根目錄下面的所有檔案
b 塊檔案,如:磁盤檔案
c 字元檔案,如:驅動檔案
d 目錄檔案
p 管道檔案
f 普通檔案
l 連結檔案
s 套接檔案
D 這個我也不知道是啥檔案
查找3天内,被被更改過的檔案;
find / -mount -ctime -3 -printf '%t %p\n'
%t表示ctime時間列印,%p代表比對的内容,printf預設不支援換行,是以需要\n
Linux的find指令
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuAjM4AzNwkDO4ETL5MjN3MDM0ATM1AjMxkTMwITL5YjNzgjMx8CXyETOxAjMvwVO2YzM4ITMvwVY0VmYtk2Lc12bj5ycn9Gbi52YugTMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
Linux的find指令
以上部分均來自于find線上幫助文檔,本人僅進行了翻譯、收集、整理工作;有不對的地方請多多指點,另外建議各位同學不要跟我這種神經病一樣,花一天的時間翻譯一個man手冊~~~
注意要點
- find支援'!'取反符号
- find預設支援通配符,不支援基礎正則
- find盡量用printf進行格式輸出,不要用ls列印
心若向陽,無謂悲傷!