shell四劍客之find

find命令詳解


### 命令格式

find pathname -options [-print -exec -ok]

### 命令參數

pathname:find命令所查找的目錄路徑。例如用.表示當前目錄,用/來表示系統根目錄
-print:find命令將會匹配的文件輸出到標準輸出。-exec: find命令對匹配的文件執行該參數所給出的shell命令。相應命令的形式為'command' {  } \;,注意{   }和\;之間的空格。-ok: 和-exec的作用相同,只不過以一種更為安全的模式來執行該參數所給出的shell命令,在執行每一個命令之前,都會給出提示,讓用戶來確定是否執行。### 命令選項

-name   按照文件名查找文件。-perm   按照文件權限來查找文件。-prune  使用這一選項可以使find命令不在當前指定的目錄中查找,如果同時使用-depth選項,那么-prune將被find命令忽略。-user   按照文件屬主來查找文件。-group  按照文件所屬的組來查找文件。-mtime -n +n  按照文件的更改時間來查找文件, - n表示文件更改時間距現在n天以內,+ n表示文件更改時間距現在n天以前。find命令還有-atime和-ctime 選項,但它們都和-m time選項。-nogroup  查找無有效所屬組的文件,即該文件所屬的組在/etc/groups中不存在。-nouser   查找無有效屬主的文件,即該文件的屬主在/etc/passwd中不存在。-newer file1 ! file2  查找更改時間比文件file1新但比文件file2舊的文件。-type  查找某一類型的文件,諸如:b - 塊設備文件。
d - 目錄。
c - 字符設備文件。
p - 管道文件。
l - 符號鏈接文件。
f - 普通文件。
-name "文件名稱":支持使用glob *, ?, [], [^] 
-iname "文件名稱":不區分字母大小寫 -inum n  按inode號查找 
-samefile name  相同inode號的文件 -links n   鏈接數為n的文件 
-regex "PATTERN":以PATTERN匹配整個文件路徑字 符串,而不僅僅是文件名稱另外,下面三個的區別:

amin n   查找系統中最后N分鐘訪問的文件
-atime n  查找系統中最后n*24小時訪問的文件-cmin n 查找系統中最后N分鐘被改變文件狀態的文件-ctime n  查找系統中最后n24小時被改變文件狀態的文件-mmin n   查找系統中最后N分鐘被改變文件數據的文件-mtime n  查找系統中最后n24小時被改變文件數據的文件

常用實例1. find -atime -2超過48小時內查看或者執行的文件
2. find . -name ".log"查找當前目錄以.log結尾的文件
3. find /var/log -perm 777查找/var/log目錄下權限為777的文件
4. find . -type f -name ".log"查找當前目錄以.log為結尾的普通文件
5. find . size +10M -print查找當前目錄大于1M的文件
6. find .-type d | sort查找當前所有目錄并且排序
7. find -name april*  fprint file    在當前目錄下查找以april開始的文件,并把結果輸出到file中
8. find -name ap* -o -name may*    查找以ap或may開頭的文件
9. find /mnt -name tom.txt -ftype vfat 在/mnt下查找名稱為tom.txt且文件系統類型為vfat的文件
10.find /mnt -name t.txt ! -ftype vfat  在/mnt下查找名稱為tom.txt且文件系統類型不為vfat的文件
11.find /tmp -name wa* -type l  在/tmp下查找名為wa開頭且類型為符號鏈接的文件
12.find /home -mtime -2  在/home下查最近兩天內改動過的文件
13.find /home -atime -1  查1天之內被存取過的文件
14.find /home -mmin +60 在/home下查60分鐘前改動過的文件
15.find /home -amin +30  查最近30分鐘前被存取過的文件
16.find /home -newer tmp.txt 在/home下查更新時間比tmp.txt近的文件或目錄
17.find /home -anewer tmp.txt 在/home下查存取時間比tmp.txt近的文件或目錄
18.find /home -used -2 列出文件或目錄被改動過之后,在2日內被存取過的文件或目錄
19.find /home -user cnscn 列出/home目錄內屬于用戶cnscn的文件或目錄
20.find /home -uid +501 列出/home目錄內用戶的識別碼大于501的文件或目錄
21.find /home -group cnscn 列出/home內組為cnscn的文件或目錄
22.find /home -gid 501 列出/home內組id為501的文件或目錄
23.find  /home -nouser 列出/home內不屬于本地用戶的文件或目錄
24.find /home -nogroup 列出/home內不屬于本地組的文件或目錄
25.find /home -name tmp.txt -maxdepth 4 列出/home內的tmp.txt 查時深度最多為3層
26.find /home  -name tmp.txt -mindepth  3 從第2層開始查
27.find /home -empty  查找大小為0的文件或空目錄
28.find /home -size +512k 查大于512k的文件
29.find /home -size -512k  查小于512k的文件
30.find /home -links  +2  查硬連接數大于2的文件或目錄
31.find /home = -perm =0700  查權限為700的文件或目錄
32.find /tmp -name tmp.txt -exec cat {} \;查找/tmp下的tmp.txt文件并且執行catfind

組合條件: 與:-a 或:-o 非:-not, !

德·摩根定律:

非(P 且 Q) = (非 P) 或 (非 Q) 非(P 或 Q) = (非 P) 且 (非 Q)

!A -a !B = !(A -o B)

!A -o !B = !(A -a B) 在實際操作中,要查找的文件要滿足好幾個條件,這時-a -o -not ! 選項就特別的好用了。下面舉幾個例子

  1. 查找/var 目錄下書諸位root,且屬組為mail的所有文件

[root@centous1 ~]# find /var -user root -a -group mail/var/spool/mail
  1. 查找/var目錄下不屬于root、ip、gdm的所有文件

[root@centous1 ~]# find /var -not \( -user root -o -user ip -o gdm \)
  1. 查找/var目錄下最近一周內其內容修改過,同時屬主不為root,也不是postfix的文件

[root@centous1 ~]# find /var -atime -7 -not \( -user root -o -user postfix \)
/var/log/mysqld.log/var/spool/mail/basher
/var/spool/mail/user1
/var/spool/mail/zabbix
/var/spool/mail/rpc
/var/spool/mail/user2
  1. 查找當前系統上沒有屬主或屬組,且最近一個周內曾被訪問過的文件

find / \( -nouser -o -nogroup \) -atime -7
  1. 查找/etc目錄下大于1M且類型為普通文件的所有文件

[root@centous1 ~]# find /etc -size +1M -type f/etc/selinux/targeted/modules/active/policy.kern
/etc/selinux/targeted/policy/policy.24
  1. 查找/etc目錄下所有用戶都沒有寫權限的文件

[root@centous1 ~]# find /etc/ -not -perm /222 -ls (這里注意222前面用的是/ )265076    4 -r--r--r--   1 root     root           80 9月  1  2014 /etc/lvm/profile/thin-performance.profile265074    4 -r--r--r--   1 root     root          827 10月 16  2014 /etc/lvm/profile/metadata_profile_template.profile265073    4 -r--r--r--   1 root     root         2231 10月 16  2014 /etc/lvm/profile/command_profile_template.profile265075    4 -r--r--r--   1 root     root           76 9月  1  2014 /etc/lvm/prof
mode 精確權限匹配

/mode 每一位只要有一類匹配的就行

-mode 每一類必須同時擁有mode指定的權限0 表示不關注,權限隨意
  1. 查找/etc目錄下至少有一類用戶沒有執行權限的文件

[root@centous1 ~]# find /home/ -not -perm -111 -ls1831429    4 drwx------   4 nologin  nologin      4096 8月  8 05:32 /home/nologin1831433    4 -rw-r--r--   1 nologin  nologin        18 10月 16  2014 /home/nologin/.bash_logout
  1. 查找/etc/init.d目錄下,所有用戶都有執行權限,且其它用戶有寫權限的文件

[root@centous1 ~]# find /etc/init.d/ -perm -113

原創文章,作者:forest,如若轉載,請注明出處:http://www.www58058.com/36405

(0)
forestforest
上一篇 2016-08-22 09:29
下一篇 2016-08-22 09:29

相關推薦

  • 任務計劃

                          Linux任務計劃 一、任務計劃     (1)未來的某一個時間點執行一次某任務:at、batch     (2)周期性運行某…

    2017-05-14
  • bash變量詳解

       shell作為用戶和Unix/Linux溝通的橋梁,既可以是一個可執行的二進制程序,同時也是一個具備了編程能力的程序設計語言,定義了各種各樣的變量和參數,下面介紹一下shell之上的各種變量。 1、本地變量    特性:只對當前shell生效 [root@centos7 ~/bin]#cat …

    Linux干貨 2016-08-15
  • 2017-10-4Linux基礎知識(3)

    在上一章中講到了操作系統的歷史的發展以及Linux的如何誕生,在1991年的8月份,創始人Linus宣布成立Linux的,Larry Wall開發diff和patch打補丁的命令程序使得Linux可以在安全性方面有很大的提升。

    Linux干貨 2017-10-05
  • GOPS 2016全球運維大會 ? 北京站

    GOPS 2016全球運維大會 ? 北京站已經圓滿落幕,最新GOPS大會推薦:GOPS2017全球運維大會 ? 深圳站 基本信息: GOPS2017全球運維大會 ? 深圳站 時間:2017-04-21 08:00:00 至 2017-04-22 18:00:00結束 地點:深圳    會議規模:5000人 會議詳情:http://www.…

    Linux干貨 2016-11-03
  • ?mysql備份之lvm

    mysql備份之lvm 新建一個lvm磁盤,這里我建的lv為mydatalv,掛載到了/data下 [root@localhost ~]# lvs   LV       VG     Attr&nbs…

    Linux干貨 2016-07-19
  • tcpdump輸出詳解

    在這里不得不再吐槽下國內整個IT粗糙浮躁,度娘下來的中文文檔幾盡抄襲~google下來的文檔英文文檔質量遠高于國內中文文檔.用ie或沒有安裝插件的瀏覽器訪問,不然可能會有其它訪問請求數據干擾分析 IP數據包結構 TCP數據包結構 // tcpdump需root權限 # tcpdump -x -i eth1 i…

    Linux干貨 2015-04-15
欧美性久久久久