find命令使用
前言:
實時查找工具,通過遍歷指定路徑下的文件系統完成文件查找。
工作特點:
查找速度略慢;
精確查找;
實時查找;
語法:
find [OPTION]... [查找路徑] [查找條件] [處理動作]
查找路徑:指定具體目標路徑(可以指定多個);默認為當前目錄;
查找條件:指定的查找標準,可以文件名、大小、類型、權限等標準進行;默認為找出指定路徑下的所有文件;
處理動作:對符合條件的文件做什麽操作;默認輸出至屏幕;
查找條件:
根據文件名查找:
-name "文件名稱":支持使用glob
*, ?, [], [^]
-iname "文件名稱":不區分字母大小寫
-regex"PATTERN":以PATTERN匹配整個文件路徑字符串,而不僅僅是文件名:(正則表達式)
[[email protected] ~]# find /etc -name "passwd"
/etc/pam.d/passwd
/etc/passwd
[[email protected] ~]# find /etc -name "*passwd"
/etc/pam.d/passwd
/etc/security/opasswd
/etc/passwd
根據屬主、屬組查找:
-user USERNAME:查找屬主為指定用戶的文件
[[email protected] ~]# ls -l /tmp/findfile/
總計 24
-rw-r--r-- 1 root root 534 04-01 19:13 fstab
-rw-r--r-- 1 centos centos 47 04-01 19:16 issue
-rw-r--r-- 1 root root 1672 04-01 19:13 passwd
[[email protected] ~]# find /tmp/findfile/-user centos
/tmp/findfile/issue
[[email protected] ~]# find /tmp/findfile/-user root
/tmp/findfile/
/tmp/findfile/passwd
/tmp/findfile/fstab
group GRPNAME: 查找屬組為指定組的文件
[[email protected]
/tmp/findfile/
/tmp/findfile/passwd
/tmp/findfile/fstab
-gid GroupID:查找屬組為指定的GID號的文件
-uid UserID:查找屬主為指定的UID號的文件
[[email protected] ~]# cat /etc/passwd | tail -n 1
centos:x:504:504::/home/centos:/bin/bash
[[email protected] ~]# find /tmp/findfile/ -gid 504
/tmp/findfile/issue
[[email protected] ~]# find /tmp/findfile/ -uid 504
/tmp/findfile/issue
[[email protected] ~]#
-nouser:查找沒有屬主的文件
[[email protected] ~]# ls -l /tmp/findfile/
總計 24
-rw-r--r-- 1 root 504 534 04-01 19:13 fstab
-rw-r--r-- 1 504 504 47 04-01 19:16 issue
-rw-r--r-- 1 root root 1672 04-01 19:13 passwd
[[email protected] ~]# find /tmp/findfile/ -nouser
/tmp/findfile/issue
-nogroup:查找沒有屬組的文件
[[email protected] ~]# ls -l /tmp/findfile/
總計 24
-rw-r--r-- 1 root 504 534 04-01 19:13 fstab
-rw-r--r-- 1 504 504 47 04-01 19:16 issue
-rw-r--r-- 1 root root 1672 04-01 19:13 passwd
[[email protected] ~]# find/tmp/findfile/ -nogroup
/tmp/findfile/issue
/tmp/findfile/fstab
根據文件類型查找:
-type TYPE:
f: 普通文件
d: 目錄文件
l: 符號鏈接文件
s:套接字文件
b: 塊設備文件
c: 字符設備文件
p: 管道文件
[[email protected] ~]# ls -l /tmp/findfile/
總計 32
-rw-r--r-- 1 root 504 534 04-01 19:13 fstab
-rw-r--r-- 1 504 504 47 04-01 19:16 issue
-rw-r--r-- 1 root root 1672 04-01 19:13 passwd
drwxr-xr-x 2 root root 4096 04-01 19:32 test
[[email protected] ~]# find /tmp/findfile/ -type f
/tmp/findfile/issue
/tmp/findfile/passwd
/tmp/findfile/fstab
[[email protected] ~]# find /tmp/findfile/ -type d
/tmp/findfile/
/tmp/findfile/test
組合條件:
與:-a
或:-o
非:-not, !
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
[[email protected] ~]# find /tmp/findfile/ -not \( -user root -o -name‘fstab‘ \) -ls
917568 8 -rw-r--r-- 1 504 504 47 4月 1 19:16 /tmp/findfile/issue
[[email protected] ~]# find /tmp/findfile/ \( -not -user root -a -not -name‘fstab‘ \) -ls
917568 8 -rw-r--r-- 1 504 504 47 4月 1 19:16 /tmp/findfile/issue
根據文件大小來查找:
-size [+|-]#UNIT
常用單位:k, M, G
#UNIT: (#-1, #] :#-1到#的內容
-#UNIT:[0,#-1]
+#UNIT:(#,oo)
[[email protected] ~]# find /var/ -size 3k -exec ls -lh {} \;
-rw-r--r-- 1 root root 2.1K 2014-09-30 /var/cache/yum/extras/repomd.xml
-rw------- 1 root root 2.5K 03-07 22:52 /var/log/maillog.4
-rw------- 1 root root 2.6K 04-02 04:02 /var/log/maillog
根據時間戳:
以“天”為單位;
-atime [+|-]#,
#: [#,#+1)
+#: [#+1,oo]
-#: [0,#)
-mtime
-ctime
以“分鐘”為單位:
-amin
-mmin
-cmin
[[email protected] ~]# find /var/ -atime 2 -ls
2392999 8 -rw-r----- 1 root lp 84 3月30 21:45 /var/cache/cups/job.cache
2392998 8 -rw-r----- 1 root lp 75 3月30 21:45 /var/cache/cups/remote.cache
根據權限查找:
-perm [/|-]MODE
MODE: 精確權限匹配
/MODE:任何一類(u,g,o)對象的權限中只要能一位匹配即可;
-MODE:每一類對象都必須同時擁有為其指定的權限標準;
find命令使用