Shell編程—【05】Linux的find命令詳解

經常使用參數:

-name 根據文件名查找

查找/etc目錄下以conf結尾的文件shell

find /etc -name '*conf'
複製代碼

-iname 根據文件名查找忽略大小寫

查找當前目錄文件名爲abc的文件,不區分大小寫spa

find ./ -iname abc
複製代碼

-user 根據所屬用戶查找

查找當前目錄文件全部者爲testuser的文件code

find ./ -user testuser
複製代碼

-group 根據所屬用戶組查找

查找文件屬組爲work的全部文件xml

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字節的文件class

find /etc -size -10000c
複製代碼

例2:查找/etc目錄下大於1M的文件test

find /etc -size +1M
複製代碼

-mtime 根據文件更改時間查找 (天)

  • -n n天之內修改的文件
  • +n n天之外修改的文件
  • n 正好n天修改的文件

例1:查找/etc目錄下5天以內修改且以conf結尾的文件file

find /etc -mtime -5 -name '*.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分鐘以內修改的目錄command

find /etc -mmin -30 -type d
複製代碼

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

例0:在/etc下的3級子目錄開始搜索

find /etc -mindepth 3 
複製代碼

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

例1:在/etc下搜索符合條件的文件,但最多搜索到2級子目錄

find /etc -maxdepth 3 -name '*.conf'
複製代碼

例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,而後將其刪除

find ./etc/ -type f -name '*.conf' -size +10k -exec rm -f {} \;
複製代碼

例2:將/var/log/目錄下以log結尾的文件,且更改時間在7天以上的刪除

find /var/log/ -name '*.log' -mtime +7 -exec rm -rf {} \;
複製代碼

例3:搜索條件和例子1同樣,只是不刪除,而是將其複製到/root/conf目錄下

find ./etc/ -size +10k -type f -name '*.conf' -exec cp {} /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結尾的普通文件

find . -type f -a \( -user hdfs -o -name '*.xml' \)
複製代碼
相關文章
相關標籤/搜索