天天看點

Shell程式設計—【05】Linux的find指令詳解【Shell程式設計系列】https://blog.csdn.net/ilo114/article/category/8961526

【Shell程式設計系列】https://blog.csdn.net/ilo114/article/category/8961526

高頻參數:

-name 根據檔案名查找

查找/etc目錄下以conf結尾的檔案

-iname 根據檔案名查找忽略大小寫

查找目前目錄檔案名為abc的檔案,不區分大小寫
find ./ -iname abc
           

-user 根據所屬使用者查找

查找目前目錄檔案所有者為testuser的檔案
find ./ -user testuser
           

-group 根據所屬使用者組查找

查找檔案屬組為work的所有檔案
find . -group work
           

-type 根據類型查找

  • f 檔案 find . -type f
  • d 目錄 find . -type d
  • c 字元裝置檔案 find . -type c
  • b 塊裝置檔案 find . -type b
  • l 連結檔案 find . -type l
  • p 管道檔案 find . -type p

-size 根據大小查找

  • -n 小于大小n的檔案
  • +n 大于小于n的檔案
例1:查找/etc目錄下小于10000位元組的檔案
find /etc -size -10000c
           
例2:查找/etc目錄下大于1M的檔案
find /etc -size +1M
           

-mtime 根據檔案更改時間查找 (天)

  • -n n天以内修改的檔案
  • +n n天以外修改的檔案
  • n 正好n天修改的檔案
例1:查找/etc目錄下5天之内修改且以conf結尾的檔案
例2:查找/etc目錄下10天之前修改且屬主為root的檔案
find /etc -mtime +10 -user root
           

-mmin 根據檔案更改時間查找 (分鐘)

  • -n n分鐘以内修改的檔案
  • +n n分鐘以外修改的檔案
例1:查找/etc目錄下30分鐘之前修改的檔案
find /etc -mmin +30
           
例2:查找/etc目錄下30分鐘之内修改的目錄
find /etc -mmin -30 -type d
           

-mindepth n 表示從n級子目錄開始查找

例0:在/etc下的3級子目錄開始搜尋
find /etc -mindepth 3 
           

-maxdepth n 表示最多查找到n級子目錄

例1:在/etc下搜尋符合條件的檔案,但最多搜尋到2級子目錄
例2:
find ./etc/ -type f -name '*.conf' -size +10k -maxdepth 2
           

了解參數:

-nouser 查找沒有屬主的使用者

find . -type f -nouser
           

-nogroup 查找沒有屬組的使用者

find . -type f -nogroup
           

-perm 根據使用者權限查找

find . -perm 664
           

-prune 排除特定目錄去查找

  • 通常和-path一起使用,用于将特定目錄排除在搜尋條件之外
例1:查找目前目錄下所有普通檔案,但排除test目錄
find . -path ./etc -prune -o -type f
           
例2:查找目前目錄下所有普通檔案,但排除etc和opt目錄
find . -path ./etc -prune -o -path ./opt -prune -o -type f
           
例3:查找目前目錄下所有普通檔案,但排除etc和opt目錄,但屬主為hdfs
find . -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs

           
例4:查找目前目錄下所有普通檔案,但排除etc和opt目錄,但屬主為hdfs,且檔案大小必須大于500位元組
find . -path ./etc -prune -o -path ./opt -prune -o -type f -a -user hdfs -a -size +500c
           

-newer file1

find /etc -newer a
           

操作:

-print 列印輸出

-exec 對搜尋到的檔案執行特定的操作,格式為-exec ‘command’ {} ;

例1:搜尋/etc下的檔案(非目錄),檔案名以conf結尾,且大于10k,然後将其删除
例2:将/var/log/目錄下以log結尾的檔案,且更改時間在7天以上的删除
例3:搜尋條件和例子1一樣,隻是不删除,而是将其複制到/root/conf目錄下

-ok 和exec功能一樣,隻是每次操作都會給使用者提示

邏輯運算符:

-a 與

-o 或

-not | ! 非

例1:查找目前目錄下,屬主不是hdfs的所有檔案
find . -not -user hdfs 	|	find . ! -user hdfs
           
例2:查找目前目錄下,屬主屬于hdfs,且大小大于300位元組的檔案
find . -type f -a -user hdfs -a -size +300c
           
例3:查找目前目錄下的屬主為hdfs或者以xml結尾的普通檔案