Linux命令——find详解
find是一個非常有效的工具,他可以遍歷指定目錄甚至整個系統來查找某些文件或目錄
find [查找路徑] [查找條件] [處理動作]一、查找路徑
(1) ./? ? 指的是當前目錄下開始查找
(2)/? ? ? 系統目錄下開始查找
(3)/home/username/? ?指定目下開始查找(絕對路徑)
二、查找條件
1、根據名稱查找
(1)-name :區分名稱字母大小寫
[root@nn nn]# find / -name mn /usr/share/locale/mn /usr/share/X11/xkb/symbols/mn
(2)-iname :不區分名稱字母大小寫
[root@nn ~]# find / -iname mn /root/MN /usr/share/locale/mn /usr/share/X11/xkb/symbols/mn?
2、根據文件從屬關系查找
(1)-user :查找指定屬主的文件
[root@nn ~]# find / -user gdm /var/lib/gdm/.pulse /var/lib/gdm/.pulse/default.pa -rw-------. 1 gdm gdm 354 4月 11 2018 default.pa [root@nn ~]# ll /var/lib/gdm/.pulse/default.pa -rw-------. 1 gdm gdm 354 4月 11 2018 /var/lib/gdm/.pulse/default.pa
(2)-group :查找指定屬組的文件
[root@nn MN]# find /root/MN/ -group root /root/MN/ /root/MN/1 /root/MN/2 /root/MN/3 [root@nn MN]# ll 總用量 0 -rw-r--r--. 1 root root 0 8月 14 19:39 1 -rw-r--r--. 1 root root 0 8月 14 19:39 2 -rw-r--r--. 1 root root 0 8月 14 19:39 3
(3)-uid : 查找屬主為指定的UID的文件
[root@master ~]# useradd -u 500 user11 #創建新用戶uid為500 [root@master ~]# find / -uid 500 #查找uid為500的文件 /var/spool/mail/user11 /home/user11 /home/user11/.bash_logout /home/user11/.bash_profile /home/user11/.bashrc?
(4)-gid :查找屬組為指定的GID的文件
[root@master ~]# cat /etc/group #查看屬組信息 docker:x:994: user11:x:1000: [root@master ~]# find / -gid 994 -ls #查找gid為944的文件 263628 0 srw-rw---- 1 root docker 0 8月 20 14:12 /run/docker.sock?
(5)nouser :查找無屬主文件
[root@nn ~]# find / -nouser | head -3/var/lib/docker/overlay2/de8233d5480dd675767f5b938329557152600440855f58fade5577c4e2e2b4a9/diff/usr/local/apache2 /var/lib/docker/overlay2/05f462df51b86abd8ca78aab436dc6693f498b25e1cdd848ac96f66a49cc5b55/diff/var/cache/apt/archives/partial /var/lib/docker/overlay2/cf2c1c9b669135b78ed5aec64b9fb5a8f01002ed940a134a6e5b2deeefd1ac47/diff/usr/local/apache2?
(6)nogroup :查找無數組文件
[root@nn ~]# find / -nogroup | tail -3 /var/lib/docker/overlay2/cd1cf0c250448680c6f18458d422f7c7a81e1dc9a0687d457d2c6c8f7658c56b/diff/var/log/lastlog /var/lib/docker/overlay2/cd1cf0c250448680c6f18458d422f7c7a81e1dc9a0687d457d2c6c8f7658c56b/diff/var/log/wtmp /var/lib/docker/overlay2/977f3e26c1d475d32c5b28a27078954570e9880dc217ed803aa0ea0c4447b29b/diff/usr/bin/ssh-agent?
3、根據權限查找
(1)-perm? mode :精確匹配(匹配的權限值必須完全相等)
[root@nn nn]# find /nn -perm 755 -ls 976546 4 drwxr-xr-x 8 root root 4096 7月 7 2017 /nn 48641923 0 drwxr-xr-x 2 root root 58 7月 7 2017 /nn/css 78622835 4 drwxr-xr-x 2 root root 4096 7月 7 2017 /nn/img 103528340 4 drwxr-xr-x 2 root root 4096 7月 7 2017 /nn/index 976452 0 drwxr-xr-x 2 root root 94 7月 7 2017 /nn/js 48641927 0 drwxr-xr-x 2 root root 112 7月 7 2017 /nn/php 78622854 0 drwxr-xr-x 2 root root 154 7月 7 2017 /nn/.idea
(2)-perm? -mode :模糊查詢(每一類用戶(屬主,屬組,其他)的權限中的每一位(r,w,x)同時符合條件既滿足,9位權限之間存在 “且” 關系);
[root@nn MN]# find / -perm -755 -ls | head 524352 0 drwxr-xr-x 4 root root 32 7月 24 11:06 /boot/efi/EFI79 0 drwxr-xr-x 2 root root 62 7月 24 11:06 /boot/efi/EFI/BOOT 524353 12 drwxr-xr-x 2 root root 8192 7月 24 17:42 /boot/grub2/i386-pc 1069121 4 drwxr-xr-x 2 root root 4096 7月 24 17:42 /boot/grub2/locale 1572930 0 drwxr-xr-x 2 root root 25 7月 24 17:42 /boot/grub2/fonts68 0 drwxr-xr-x 2 root root 27 7月 24 17:38 /boot/grub74 6488 -rwxr-xr-x 1 root root 6639904 11月 9 2018 /boot/vmlinuz-3.10.0-957.el7.x86_6477 6488 -rwxr-xr-x 1 root root 6639904 7月 24 17:41 /boot/vmlinuz-0-rescue-187c4b8ed94d49429dd12ab3ea220b473 0 drwxr-xr-x 20 root root 3340 8月 12 23:36 /dev37126 0 lrwxrwxrwx 1 root root 3 8月 12 14:11 /dev/cdrom -> sr0
(3)-perm? /mode :模糊查詢(任何一類用戶(屬主,屬組,其他)的權限中的任何一位(r,w,x)符合條件即滿足,9位權限之間存在 “或” 關系);
[root@nn MN]# find /root/MN /perm 600 -ls 103529246 0 drwxr-xr-x 2 root root 33 8月 14 19:39 /root/MN 103533344 0 -rw-r--r-- 1 root root 0 8月 14 19:39 /root/MN/1 103533345 0 -rw-r--r-- 1 root root 0 8月 14 19:39 /root/MN/2 103533346 0 -rw-r--r-- 1 root root 0 8月 14 19:39 /root/MN/3?
4、根據文件類型查詢
-type : 根據不同的文件類型篩選
? ? ? ?
[root@nn MN]# find / -type f -ls | head -3 1069156 4 -rwx------ 1 root root 134 11月 10 2018 /boot/efi/EFI/centos/BOOT.CSV 1069157 4 -rwx------ 1 root root 134 11月 10 2018 /boot/efi/EFI/centos/BOOTX64.CSV 1069158 1128 -rwx------ 1 root root 1151864 11月 10 2018 /boot/efi/EFI/centos/MokManager.efi [root@nn MN]# find / -type d -ls | head -3 64 0 dr-xr-xr-x 18 root root 234 8月 14 15:39 /64 4 dr-xr-xr-x 5 root root 4096 8月 12 14:12 /boot67 0 drwx------ 3 root root 17 11月 9 2018 /boot/efi?
5、根據文件大小查詢
常用單位: k,M, G
? ? ?(1)-size? +#unit? : (#,∞?)大于#的文件
[root@nn MN]# ll -h-rw-r--r--. 1 root root 4.1K 8月 15 00:55 1 -rw-r--r--. 1 root root 3.4K 8月 15 00:55 2 -rw-r--r--. 1 root root 2 8月 15 00:33 3 [root@nn MN]# find /root/MN/ -size +4k #大于4k /root/MN/1
(2)-size? -#unit? ?: [0,#-1] 大于等于0,小于等于#-1
[root@nn MN]# ll -h-rw-r--r--. 1 root root 4.1K 8月 15 00:55 1 -rw-r--r--. 1 root root 3.4K 8月 15 00:55 2 -rw-r--r--. 1 root root 2 8月 15 00:33 3 [root@nn MN]# find /root/MN/ -size -4k #大于等于0k小于3k /root/MN/ /root/MN/3 [root@nn MN]# find /root/MN/ -size -3k #大于0k小于等于2k /root/MN/ /root/MN/3 [root@nn MN]# find /root/MN/ -size -5k #大于0k夏鷗等于4k /root/MN/ /root/MN/2 /root/MN/3
?
(3)-size? #unit? ? :(#-1,#] 大于#-1,小于等于#?
[root@nn MN]# ll -h-rw-r--r--. 1 root root 4.1K 8月 15 00:55 1 -rw-r--r--. 1 root root 3.4K 8月 15 00:55 2 -rw-r--r--. 1 root root 2 8月 15 00:33 3 [root@nn MN]# find /root/MN/ -size 3k #大于2k小于3k [root@nn MN]# find /root/MN/ -size 4k #大于3K小于4k /root/MN/2
[root@nn MN]# find /root/MN/ -size 5k #大于4k小于5k
/root/MN/1?
6、根據時間查找
n為n*24小時 ,即以天為單位。通過以下命令? 可查看文件的這三個時間戳
stat filename
?
(1)-atime :access time? :文件的最后訪問時間 cat
[root@nn ~]# find / -atime +2 | head -1 #查找最近一次訪問時間在兩天以前的文件 /boot/efi/EFI/centos/BOOT.CSV [root@nn ~]# stat /boot/efi/EFI/centos/BOOT.CSV #查看文件時間戳文件:"/boot/efi/EFI/centos/BOOT.CSV"大小:134 塊:8 IO 塊:4096 普通文件 設備:801h/2049d Inode:1069156 硬鏈接:1 權限:(0700/-rwx------) Uid:( 0/ root) Gid:( 0/ root) 環境:system_u:object_r:boot_t:s0 最近訪問:2018-11-10 01:53:06.000000000 +0800 #所找到的文件符合條件 最近更改:2018-11-10 01:53:06.000000000 +0800 最近改動:2019-07-24 11:06:31.939673005 +0800 創建時間:-?
(2)-ctime:change time :文件最后改動時間,這里改動是指文件內容發生修改或者文件權限,路徑發生改變。?echo? chmod? chown? chgrp
[root@nn ~]# find / -ctime -1 | head -3 #查找一天內被改動的文件 / /dev/char /dev/char/189:137 [root@nn ~]# stat /dev/char #查看時間文件:"/dev/char"大小:3080 塊:0 IO 塊:4096 目錄 設備:5h/5d Inode:9718 硬鏈接:2 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:system_u:object_r:device_t:s0 最近訪問:2019-08-15 23:57:17.386863729 +0800 最近更改:2019-08-15 23:20:23.209021653 +0800 最近改動:2019-08-15 23:20:23.209021653 +0800 #符合查找條件的文件 創建時間:-?
(3)-mtime:modify time :文件最后更改時間,指的是文件內容發生修改的最后時間。? echo?
[root@nn ~]# find / -mtime 1 | head -3 #查找從現在起往前算一天更改過的文件 /proc/sys/fs/binfmt_misc /proc/sys/fs/binfmt_misc/register /proc/sys/fs/binfmt_misc/status [root@nn ~]# stat /proc/sys/fs/binfmt_misc #查看時間文件:"/proc/sys/fs/binfmt_misc"大小:0 塊:0 IO 塊:4096 目錄 設備:4ch/76d Inode:1 硬鏈接:2 權限:(0755/drwxr-xr-x) Uid:( 0/ root) Gid:( 0/ root) 環境:system_u:object_r:binfmt_misc_fs_t:s0 最近訪問:2019-08-16 00:01:12.588839041 +0800 最近更改:2019-08-14 19:16:20.741997870 +0800 #符合查找條件的文件 最近改動:2019-08-14 19:16:20.741997870 +0800 創建時間:-?
(4)-amin? 、 -cmin 、 -mmin 是以分鐘為單位,用法和上面的一樣
?
三、處理動作
1、-ls :類似于對查找到的文件執行 “ls -l”命令;
2、-ok COMMAND {} \ ;? :執行命令,交互式
3、-exec COMMAND {} \ ;? :執行命令
4、| xargs? COMMAND? :? 執行命令
四、多個選項共同使用
1、-a :與,同時滿足,如果組合條件中只有 -a ,可以省略
2、-o :或,只需要滿足其一即可,優先級比 -a 低,如果要先執行,需要加(),()需要轉譯,即? \(··· \)
? ? 3、-not :取反
4、非A且非B : -not A -a -not B = -not \( A -o B \)?
5、非A或非B :-not A -o -not B = -not \( A -a B \)
轉載于:https://www.cnblogs.com/aichitudou/p/11354266.html
總結
以上是生活随笔為你收集整理的Linux命令——find详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java虚拟机详解(六)------内存
- 下一篇: Kotlin exception