1.使用find命令搜索文件

Find命令:在本地文件系统中实时搜索,调用命令的用户必须具有要查看其内容的目录的读取和执行权限。搜索整个系统,则用起始目录/。Find的第一个参数是要搜索的目录,若省略了搜索目录,则从当前目录开始搜索,并在任何子目录中查找匹配项。

2.Find命令的一般形式:find pathname -options   

  pathname表示所查找的目录路径,/表示系统根目录

  Options常用的有下面这些:

a. 按照文件名查找(-name)

例:[root@system1 ~]# find /tmp/file2 -name file2

/tmp/file2()

[root@system1 ~]# find / -name sshd_config

/etc/ssh/sshd_config(从当前root目录开始搜索)

[root@system1 ~]# find / -name "*.txt"(使用通配符搜索文件名)

/etc/pki/nssdb/pkcs11.txt

/etc/brltty/brl-lt-all.txt

/etc/brltty/brl-mb-all.txt

/etc/brltty/brl-md-all.txt

/etc/brltty/brl-mn-all.txt

/etc/brltty/brl-ba-all.txt

【注:若搜索的文件名不区分大小写,则用-iname】

b. 按照所有者搜索(-user -group -uid -gid)

例:[user@system1 Desktop]$ find -uid 1000

.

./lili

[root@system1 ~]# find / -user root -group mail

/var/spool/mail

/var/spool/mail/root

c. 按照特定权限集搜索(-perm)【特定权限可用代表各权限的八进制数4、2、1】

[root@system1 ~]# find /home -perm 664(匹配用户具有读、写权限,组成员具有读、写权限,其他具有读权限)

/home/user/.config/gtk-3.0/bookmarks

/home/user/.config/gnome-initial-setup-done

/home/user/.config/yelp/yelp.cfg

/home/user/.cache/abrt/applet_dirlist

/home/user/.cache/tracker/miner-applications-locale.txt

/home/user/.cache/tracker/last-crawl.txt

/home/user/.cache/tracker/first-index.txt

/home/user/Desktop/lili

【注:数字权限前/表示至少匹配文件的用户、组、其他人中的至少一个,相当于或关系;而数字权限前-表示所有三个实例都必须存在,相当于与关系;与/或-一起使用时,0值类似于通配符】

[user@system1 Desktop]$ find -perm -004

.

./lili

d. 按照指定大小搜索(-size 单位有:k代表千字节 M代表兆字节G代表千兆字节)

Find -size 大小【+数字,表示大于的文件;-数字,代表小于的文件】

[root@system1 ~]# find -size -1k

./.local/share/gnome-settings-daemon/input-sources-converted

./.local/share/folks/relationships.ini

./.local/share/.converted-launchers

./.local/share/tracker/data/.meta.isrunning

./.local/share/keyrings/user.keystore.B52TQX

e. 按照文件更改时间搜索【-mmin以分钟计  -mtime以天数计】

Find -mmin 时间【如:120 表示正好在120分钟以前修改的文件;+120表示在120分钟前修改的文件;-120不到120分钟以前修改的文件】

[root@system1 ~]# find /tmp -mmin -240

/tmp

/tmp/.X11-unix

/tmp/.X11-unix/X0

/tmp/.ICE-unix

/tmp/.ICE-unix/3016

/tmp/.esd-1000

/tmp/.esd-1000/socket

/tmp/systemd-private-2Xv5n9

/tmp/systemd-private-2Xv5n9/tmp

/tmp/.X0-lock

/tmp/systemd-private-WlIQkZ

/tmp/systemd-private-WlIQkZ/tmp

/tmp/ssh-wu8iRCYHWtvO

/tmp/ssh-wu8iRCYHWtvO/agent.3016

/tmp/systemd-private-pKQdaL

/tmp/systemd-private-pKQdaL/tmp

/tmp/file2

.....

f. 按照给定文件类型搜索(-type)

Find / -type f  /匹配的文件类型是普通文件

Find / -type d  /匹配的文件类型是目录

Find / -type l  /匹配的文件类型是软连接【-links+n表示具有特定硬链接的文件,+n表示硬链接数大于n的文件,-n表示硬链接数小于n的文件】

Find / -type b  /匹配的文件类型是块设备

[root@system1 ~]# find / -type b

/dev/sda2

/dev/sda1

/dev/sda

3.使用exec来执行命令【基本命令:-exec 跟所执行的命令 {} \;其中执行的命令可以是ls-l列出,rm-rf删除,cp-a 复制等等,\;只是语法表示】

[root@system1 ~]# find / -type f -exec ls -l {} \;(表示把匹配到的当前目录下的所有普通文件列出来)

-r--------. 1 user user 67108904 Nov 22 19:23 /dev/shm/pulse-shm-74798595

-r--------. 1 user user 67108904 Nov 22 19:22 /dev/shm/pulse-shm-2901993750

-r--------. 1 user user 67108904 Nov 22 19:22 /dev/shm/pulse-shm-2662806495

-r--------. 1 user user 67108904 Nov 22 19:39 /dev/shm/pulse-shm-4161240769

-r--------. 1 user user 67108904 Nov 22 19:39 /dev/shm/pulse-shm-3144017989

-r--------. 1 gdm gdm 67108904 Nov 22 19:21 /dev/shm/pulse-shm-1648396760