一、文件查找和压缩
1.1、locate
locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库索引构建过程需要遍历整个根文件系统,很消耗资源。
工作特点
查找速度快
模糊查找
非实时查找
搜索的是文件的全路径,不仅仅是文件名
可能只搜索用户具备读取和执行权限的目录
常用选项
-i 不区分大小写的搜索
-n N 只列举前N个匹配项目
-r 使用基本正则表达式
示例:
搜索以.conf结尾的文件,只列出10个不区分大小写
1 [09:47:15 root@Centos8 ~]#locate -n 10 -ir '\.conf$'
2 /boot/loader/entries/cd01c25ace5d48be9eb5d78af5f80194-0-rescue.conf
3 /boot/loader/entries/cd01c25ace5d48be9eb5d78af5f80194-4.18.0-147.el8.x86_64.conf
4 /etc/dracut.conf
5 /etc/fuse.conf
6 /etc/host.conf
7 /etc/idmapd.conf
8 /etc/kdump.conf
9 /etc/krb5.conf
10 /etc/ld.so.conf
11 /etc/libaudit.conf
1.2、find
fifind 是实时查找工具,通过遍历指定路径完成文件查找
工作特点:
查找速度略慢
精确查找
实时查找
查找条件丰富
可能只搜索用户具备读取和执行权限的目录
格式
find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径;默认为当前目录
查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕
1.2.1、指定搜索目录层级
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度
find /etc -maxdepth 2 -mindepth 2
示例:
1 [10:06:26 root@Centos8 ~]#find /etc/ -maxdepth 2
2 /etc/
3 /etc/mtab
4 /etc/fstab
5 /etc/crypttab
6 /etc/dnf
7 /etc/dnf/modules.d
8 /etc/dnf/vars
9 /etc/dnf/aliases.d
10 /etc/dnf/dnf.conf
11 /etc/dnf/modules.defaults.d
12 /etc/dnf/plugins
13 /etc/dnf/protected.d
14 /etc/pki
15 /etc/pki/rpm-gpg
16 /etc/pki/ca-trust
17 /etc/pki/java
18 /etc/pki/tls
19 /etc/pki/rsyslog
20 /etc/rpm
21 /etc/rpm/macros.dist
22 /etc/magic
23 /etc/yum
24 /etc/yum/pluginconf.d
25 /etc/yum/protected.d
26 /etc/yum/vars
27 /etc/centos-release
28 /etc/nftables
1.2.2、根据文件名和inode查找
-name "文件名称":支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-iname "文件名称":不区分字母大小写
-inum n 按inode号查找
-samefile name 相同inode号的文件
-links n 链接数为n的文件
-regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称
示例:
按照文件名精确搜索根目录下passwd文件
1 [10:25:14 root@Centos8 ~]#find / -name passwd
2 /data/passwd
3 /etc/pam.d/passwd
4 /etc/passwd
5 /var/lib/sss/mc/passwd
6 /usr/bin/passwd
7 /usr/share/licenses/passwd
8 /usr/share/doc/passwd
模糊搜索根目录下包含passwd的文件
1 [10:34:22 root@Centos8 ~]#find / -name "*passwd*"
2 /data/passwd.bak
3 /data/passwd
4 /etc/security/opasswd
5 /etc/pam.d/passwd
6 /etc/passwd-
7 /etc/passwd
8 /var/lib/sss/mc/passwd
9 /var/www/html/centos/8/BaseOS/Packages/passwd-0.80-2.el8.x86_64.rpm
10 /usr/bin/grub2-mkpasswd-pbkdf2
11 /usr/bin/gpasswd
12 /usr/bin/passwd
13 /usr/bin/htpasswd
14 /usr/sbin/chgpasswd
15 /usr/sbin/chpasswd
16 /usr/sbin/saslpasswd2
17 /usr/sbin/lpasswd
18 /usr/lib/firewalld/services/kpasswd.xml
19 /usr/lib64/security/pam_unix_passwd.so
20 /usr/share/licenses/passwd
21 /usr/share/doc/passwd
22 /usr/share/doc/perl-Net-SSLeay/examples/passwd-cb.pl
23 /usr/share/locale/ar/LC_MESSAGES/passwd.mo
24 /usr/share/locale/as/LC_MESSAGES/passwd.mo
25 /usr/share/locale/ast/LC_MESSAGES/passwd.mo
26 /usr/share/locale/bg/LC_MESSAGES/passwd.mo
27 /usr/share/locale/bn/LC_MESSAGES/passwd.mo
28 /usr/share/locale/bn_IN/LC_MESSAGES/passwd.mo
29 /usr/share/locale/bs/LC_MESSAGES/passwd.mo
30 /usr/share/locale/ca/LC_MESSAGES/passwd.mo
31 /usr/share/locale/cs/LC_MESSAGES/passwd.mo
32 /usr/share/locale/cy/LC_MESSAGES/passwd.mo
33 /usr/share/locale/da/LC_MESSAGES/passwd.mo
34 /usr/share/locale/de/LC_MESSAGES/passwd.mo
35 /usr/share/locale/el/LC_MESSAGES/passwd.mo
36 /usr/share/locale/en_GB/LC_MESSAGES/passwd.mo
37 /usr/share/locale/es/LC_MESSAGES/passwd.mo
38 /usr/share/locale/et/LC_MESSAGES/passwd.mo
......
按照文件节点编号搜索文件
1 [10:35:56 root@Centos8 ~]#find / -inum 128 -ls
2 128 4 dr-xr-xr-x 21 root root 4096 Apr 11 00:09 /
3 128 12 -rw-r--r-- 1 root root 9892 Apr 2 23:52 /boot/grub2/i386-pc/jpeg.mod
4 128 0 drwxr-xr-x 4 root root 85 Apr 11 21:49 /data
5 128 0 -rw-r--r-- 1 root root 0 Apr 12 09:44 /sys/kernel/debug/tracing/events/xen/xen_cpu_write_ldt_entry/filter
6 128 0 -r--r--r-- 1 root root 4096 Apr 12 10:37 /sys/devices/system/memory/memory3/valid_zones
用正则表达式搜索文件名为任意字符串,以.conf结尾的文件
[10:37:48 root@Centos8 ~]#find / -regex '.*\.conf$'
/boot/loader/entries/cd01c25ace5d48be9eb5d78af5f80194-0-rescue.conf
/boot/loader/entries/cd01c25ace5d48be9eb5d78af5f80194-4.18.0-147.el8.x86_64.conf
/run/NetworkManager/resolv.conf
/run/NetworkManager/no-stub-resolv.conf
/run/tmpfiles.d/kmod.conf
......
1.2.3、按属主、属组查找
-user USERNAME:查找属主为指定用户(UID)的文件
-group GRPNAME: 查找属组为指定组(GID)的文件
-uid UserID:查找属主为指定的UID号的文件