天天看點

Linux的find指令

指令解釋

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指令

Linux的find指令

以上部分均來自于find線上幫助文檔,本人僅進行了翻譯、收集、整理工作;有不對的地方請多多指點,另外建議各位同學不要跟我這種神經病一樣,花一天的時間翻譯一個man手冊~~~

 注意要點

  • find支援'!'取反符号
  • find預設支援通配符,不支援基礎正則
  • find盡量用printf進行格式輸出,不要用ls列印

心若向陽,無謂悲傷!

下一篇: PID控制原理