linux文件查找之find
阿新 • • 發佈:2018-04-21
linux findfind - search for files in a directory hierarchy
在層級目錄中查找文件工具
在層級目錄中查找文件工具
語法
find [OPTIONS] [查找起始路徑] [查找條件] [處理動作]
常用選項
- -name name, -iname name : 文件名稱符合 name 的文件。iname 會忽略大小寫。支持glob風格的通配符;
- -user USERNAME:查找屬主指定用戶的所有文件;
- -group GRPNAME:查找屬組指定組的所有文件;
- -uid UID:查找屬主指定的UID的所有文件;
- -gid GID:查找屬組指定的GID的所有文件;
- -nouser:查找沒有屬主的文件;
-
-nogroup:查找沒有屬組的文件;
-
根據文件的類型查找:-type TYPE:
- f: 普通文件
- d: 目錄文件
- l:符號鏈接文件
- b:塊設備 文件
- c:字符設備文件
- p:管道文件
- s:套接字文件
-
組合:
- 與:-a, 默認組合邏輯;
- 或:-o
- 非:-not, !
-
根據文件的大小查找:
- -size [+|-]#UNIT ;常用單位:k, M, G
- #UNIT:(#-1, #]
- -#UNIT:[0,#-1]
- +#UNIT:(#, oo)
-
根據時間戳查找:
- 以“天”為單位:這裏的天是以24小時位單位
- -atime [+|-]# 訪問時間
- -mtime 修改時間
- -ctime 創建時間
- 以“分鐘”為單位:
- -amin
- -mmin
- -cmin
- 以“天”為單位:這裏的天是以24小時位單位
-
根據權限查找:-perm [/|-]mode;0表示不參與
- mode:精確權限匹配;
- /mode:任何一類用戶(u,g,o)的權限中的任何一位(r,w,x)符合條件即滿足;9位權限之間存在“或”關系;
- -mode:每一類用戶(u,g,o)的權限中的每一位(r,w,x)同時符合條件即滿足;9位權限之間存在“與”關系;
- 處理動作:
- -print:輸出至標準輸出;默認的動作;
- -ls:類似於對查找到的文件執行“ls -l”命令,輸出文件的詳細信息;
- -delete:刪除查找到的文件;
- -fls /PATH/TO/SOMEFILE:把查找到的所有文件的長格式信息保存至指定文件中;
- -ok COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;每次操作都由用戶進行確認;
- -exec COMMAND {} \; :對查找到的每個文件執行由COMMAND表示的命令;
DEMO:
找出/tmp目錄下屬主為非root的所有文件
[root@localhost ~]# find /tmp/ -not -uid 0 -ls
[root@localhost ~]# find /tmp/ -not -user root -ls
查找/var目錄下屬主為root,且屬組為mail的所有文件或目錄;
[root@localhost test]# find /var/ -user root -group mail
find /var/ -uid 0 -group mail
文件大小查找
[root@localhost test]# ll -h
總用量 52K
-rw-------. 1 root root 24K 4月 22 13:31 messages
-rw-------. 1 root root 25K 4月 22 13:31 messages.bak
[root@localhost tmp]# find ./ -size -25k -ls
[root@localhost tmp]# find ./ -size 25k -ls (24k,25k] 24k< x <=25k
./messages.bak
[root@localhost test]# find ./ -size -25k -type f [0,24k] 0<= x <=24k
./messages
[root@localhost test]# find ./ -size +24k -type f [25k, ] 25<= x
./messages.bak
按照文件時間來查找
[root@localhost test]# date
2018年 04月 22日 星期日 13:49:30 EDT
[root@localhost test]# find /etc/ -type f -atime 3 -ls
[root@localhost ~]# stat /etc/kdump.conf
File: ‘/etc/kdump.conf’
Size: 7265 Blocks: 16 IO Block: 4096 regular file
Device: fd00h/64768d Inode: 17265603 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: system_u:object_r:kdump_etc_t:s0
Access: 2018-04-18 23:03:40.914728405 -0400
Modify: 2018-04-16 13:12:52.585009262 -0400
Change: 2018-04-16 13:12:52.585009262 -0400
Birth: -
查找/usr目錄下不屬於root, bin或zander的所有文件或目錄;
[root@localhost test]# find /usr -not \( -user root -o -user bin -o -user zander \)
[root@localhost test]# find /usr -not -user root -a -not -user bin -a -not -user zander
查找/etc目錄下最近一周內其內容修改過,且屬主不是root用戶也不是zander用戶的文件或目錄;
[root@localhost test]# find /etc/ -mtime -7 -a -not -user root -a -not -user zander
[root@localhost test]# find /etc/ -mtime -7 -a -not \( -user root -o -user zander \)
查找當前系統上沒有屬或屬組,且最近一周內曾被訪問過的文件或目錄;
[root@localhost test]# find / \( -nouser -o -nogroup \) -a -atime -7
查找/etc目錄下大於1M且類型為普通文件的所有文件;
[root@localhost test]# find /etc/ -size +1M -type f -exec ls -lh {} \;
查找/etc目錄下所有用戶都沒有寫權限的文件;
先找任何一個有寫權限 && 取反
[root@localhost test]# find /etc/ -not -perm /222 -type f -exec ls -lh {} \;
查找/etc目錄至少有一類用戶沒有執行權限的文件;
所有用戶都有權限 && 取反
[root@localhost test]# find /etc/ -not -perm -111 -type f -exec ls -lh {} \;
查找/etc/init.d/目錄下,所有用戶都有執行權限,且其它用戶有寫權限的所有文件;
[root@localhost test]# find /etc/init.d/ -perm -111 -a -perm -112 -type f -ls
[root@localhost test]# find /etc/init.d/ -perm -113 -type f -ls
找出/tmp目錄下文件名中不包含fstab字符串的文件
[root@localhost ~]# find /tmp/ -type f -not -name ‘*fstab*‘
找出/tmp目錄下屬主為非root,而且文件名不包含fstab字符串的文件
[root@localhost ~]# find /tmp/ -not -name ‘*fstab*‘ -not -user root
linux文件查找之find