标签:pattern fstab 任务 nss 索引 comm 指定路径 命令 font
locate 非实时查找(数据库查找)
find 实时查找
locate查询系统上预建的文件索引数据库/var/lib/mlocate/mlocate.db
索引的构建是在系统较为空闲时自动进行(周期性任务),执行updatedb可以更新数据库
索引构建过程需要遍历整个根文件系统,很消耗资源
格式及选项
locate [-d] [--help] [--version] [范本样式]
-b,--basename:仅匹配路径名称的基本名称
-d, --database DBPATH:使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
-c,--count:只输出找到的数量
-e,--existing:仅打印当前现有文件的条目
-1:如果是1,则启动安全模式
-0,--null:在输出上带有NUL的单独条目
-S,--statistics:不搜索条目,打印有关每个数据库统计信息
-P,--nofollow,-H:检查文件存在时不要准寻尾随的符号链接
-l,--;imit,-n LIMIT:将输出限制为LIMIT个条目
-n:最多显示n个输出
-m,--mmap:被互虐,为了向后兼容
-r,regexp REGEXP:使用基本正则表达式
-q,--quit:安静模式,不会显示任何错误信息
-s,--stdio:被忽略,为了向后兼容
-o:指定资料库存的名字
-i,--ignore-case:忽略大小写
例:
[12:53:53 root@zhang ~]#locate passwd -n 3
/data/backup2020-11-17_11:09:24/passwd
/data/test/passwd
/etc/passwd
[12:57:46 root@zhang ~]#locate -r ‘\.conf$‘ -n5
/data/haha.conf
/etc/GeoIP.conf
/etc/asound.conf
/etc/chrony.conf
/etc/dnsmasq.conf
[12:59:29 root@zhang ~]#locate -ir \.TXT$ -n5
/data/test/abc.txt
/etc/pki/nssdb/pkcs11.txt
/usr/share/licenses/freetype-2.8/FTL.TXT
/usr/share/licenses/freetype-2.8/GPLv2.TXT
/usr/share/licenses/freetype-2.8/LICENSE.TXT
注:locate的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为updatedb。
例:
[root@zhang data]#touch /data/haha.conf
[root@zhang data]#locate conf | grep /data/haha.conf
[root@zhang data]#updatedb
[root@zhang data]#locate conf | grep /data/haha.conf
/data/haha.conf
[root@zhang ~]#rm /data/haha.conf
[root@zhang ~]#locate conf | grep /data/haha.conf
/data/haha.conf
[root@zhang ~]#updatedb
[root@zhang ~]#locate conf | grep /data/haha.conf
find时实时查找工具,通过遍历指定路径完成文件查找
特点:
查找速度略快
精确查找
实时查找
查找条件丰富
可能只搜索用户具备读取和执行权限的目录
格式
find [OPTION] [查找路径] [查找条件] [处理动作]
查找路径:指定具体路径;默认当前目录;
查找条件:指定查找标准,可以文件名、大小、权限登便准进行;默认找指定路径下的所有文件;
查找动作:对复合体案件的文件做操作,默认输出至屏幕。
例:
[13:02:45 root@zhang ~]#find
.
./.bash_logout
./.cshrc
./.tcshrc
./anaconda-ks.cfg
./.cache
./.cache/abrt
./.cache/abrt/lastnotification
./.config
./.config/abrt
./.bash_history
./.pki
./.pki/nssdb
./.bash
./.bash_profile
./y.sh
./.viminfo
./.vimrc.swp
./.vimrc
./.bashrc
-maxdepth level 最大搜索目录深度,指定目录下的文件为第1级
-mindepth level 最小搜索目录深度
例:
[13:14:31 root@zhang ~]#find /etc/ -maxdepth 1 -mindepth 1
/etc/fstab
/etc/crypttab
/etc/mtab
[13:15:28 root@zhang ~]#find /etc/ -maxdepth 2 -mindepth 2
/etc/pki/rpm-gpg
/etc/pki/tls
/etc/pki/ca-trust
/etc/pki/java
-depth -d
例:
[13:18:01 root@zhang ~]#tree /data/test/
/data/test/
├── abc.txt
├── cman.sh
├── issue_zhang
├── atd
├── authconfig
├── cbq
├── avpkt
[13:20:07 root@zhang ~]#find /data/test/
/data/test/
/data/test/abc.txt
/data/test/cman.sh
/data/test/issue_zhang
/data/test/issue_zhang/atd
/data/test/issue_zhang/authconfig
/data/test/issue_zhang/cbq
/data/test/issue_zhang/cbq/avpkt
-name “文件名称”:支持使用glob,如:*、?、[]、[^]、通配符要加双引号引起来
-iname “文件名称”:不区分大小写字母
-inum n:按inode号查找
-samefile name:相同inode号的文件
-links n:链接数为n的文件
-regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称
例:
[13:36:49 root@zhang ~]#find / -name test
/usr/bin/test
/usr/lib/modules/3.10.0-1127.19.1.el7.x86_64/kernel/drivers/ntb/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest/test
/data/test
/test
[13:36:54 root@zhang ~]#find / -iname test
/usr/bin/test
/usr/lib/modules/3.10.0-1127.19.1.el7.x86_64/kernel/drivers/ntb/test
/usr/lib64/python2.7/test
/usr/lib64/python2.7/unittest/test
/usr/share/perl5/Test
/data/test
/test
[13:46:03 root@zhang ~]#find /var -name "log*"
/var/lib/logrotate
/var/lib/logrotate/logrotate.status
/var/lib/logrotate.status.rpmsave
/var/log
-user USERNAME:查找属主指定用户(UID)的文件
-group GRPNAME:查找属组指定组(GID)的文件
-uid USERID:查找属主为指定组UID号的文件
-gid GROUPID:查找属组为指定的GID号的文件
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
-type TYPE
TYPE 可以时一下形式:
f:普通文件
d:目录文件
l:符号链接文件
s:套接字文件
b:块设备文件
c:字符设备文件
p:管道文件
例:
#查看/home的目录
[14:27:41 root@zhang ~]#find /test -type d -ls
763503 4 drwxr-xr-x 2 root root 4096 Nov 11 20:23 /test/rootdir/root/data/issu
34119263 0 drwxr-xr-x 3 root root 17 Nov 11 20:41 /test/rootdir2
67266132 4 dr-xr-x--- 6 root root 4096 Nov 10 15:36 /test/rootdir2/root
-empty
例:
[14:27:41 root@zhang ~]#find /test -type d -empty
/test/backup2020-11-11/pki/tls/private
/test/backup2020-11-11/pki/ca-trust/source/anchors
/test/backup2020-11-11/pki/ca-trust/source/blacklist
与:-a,默认多个条件是与关系
或:-o
非:-not !
例:
[14:42:53 root@zhang ~]#find /data/ -type d | wc -l
30
[14:43:04 root@zhang ~]#find /data/ -type l | wc -l
24
[14:43:08 root@zhang ~]#find /data/ -type d -o -type l | wc -l
54
[14:51:56 root@zhang ~]#find /data/ \( -type d -o -type l \) | wc -l
54
德·摩根定律:
(非A)或(非B)=非(A且B)
(非A)且(非B)=非(A或B)
例:
[root@zhang ~]#find ! \( -type d -a -empty \) |wc -l
18
[root@zhang ~]#find ! -type d -o ! -empty |wc -l
18
[root@zhang ~]#find /home/ ! \( -user zhang -o -user lu \)
/home/
/home/123.txt
[root@zhang ~]#find /home/ ! -user zhang -a ! -user lu
/home/
/home/123.txt
#找出/tmp目录下,属主不是root且文件名不以f开头的文件
[15:28:19 root@zhang ~]#find /etc/ \( -not -user root -a -not -name ‘f*‘ \) -ls
67829387 0 drwx------ 2 polkitd root 63 Oct 29 16:41 /etc/polkit-1/rules.d
34117389 8 -rw------- 1 tss tss 7046 Aug 4 2017 /etc/tcsd.conf
[15:28:22 root@zhang ~]#find /etc/ -not \( -user root -o -name ‘f*‘ \) -ls
67829387 0 drwx------ 2 polkitd root 63 Oct 29 16:41 /etc/polkit-1/rules.d
34117389 8 -rw------- 1 tss tss 7046 Aug 4 2017 /etc/tcsd.conf
例:
#查找/etc下,除/etc/sane.d目录的其它所有.conf后缀的文件
[15:34:20 root@zhang ~]#find /etc/ -path ‘/etc/sane.d‘ -a -prune -o -name "*.conf"
/etc/resolv.conf
/etc/pki/ca-trust/ca-legacy.conf
/etc/yum/pluginconf.d/fastestmirror.conf
#查找/etc下,除/etc/sane.d和/etc/fonts两个目录的所有.conf后缀的文件
[15:35:28 root@zhang ~]#find /etc/ \( -path "/etc/sane.d" -o -path "/etc/fonts" \) -a -prune -o -name "*.conf"
/etc/resolv.conf
/etc/pki/ca-trust/ca-legacy.conf
/etc/yum/pluginconf.d/fastestmirror.conf
#排除/proc和/sys目录
[15:37:27 root@zhang ~]#find / \( -path "/sys" -o -path "/proc" \) -a -prune -o -type f -a -mmin -1
/proc
/sys
-size [+|-]#UNIT
常用单位:K,M,G,c(byte),注意大小写敏感
#UNIT:(#-1,#]
如:6k表示(5k,6k]
-#UNIT:[0,#-1]
如:-6k 表示[0,5k]
+#UNIT:(#,∞)
如:+6k 表示(6k,∞)
例:
[15:46:57 root@zhang data]#find /data/ -size 6k
/data/test/issue_zhang/network-scripts/init.ipv6-global
/data/test/issue_zhang/sysconfig/network-scripts/init.ipv6-global
/data/sysconfig.bak/network-scripts/init.ipv6-global
/data/sysconfig.bak/sysconfig/network-scripts/init.ipv6-global
[15:45:49 root@zhang data]#find /data/ -size -10k
/data/
/data/test
/data/test/cman.sh
/data/test/issue_zhang
/data/test/issue_zhang/selinux
[15:46:02 root@zhang data]#find /data/ -size +10k
/data/test/issue_zhang/network-scripts/ifup-aliases
/data/test/issue_zhang/network-scripts/ifup-eth
/data/test/issue_zhang/network-scripts/ifup-ippp
#以“天”为单位
-atime [+|-]
-mtime
-ctime
#:[#,#+1)
-#:[0,#)
+#:[#+1,∞)
-mtime 10
-mtime -10
-mtime +10
#以“分钟”为单位
-atin
-mmin
-cmin
-perm [/|-] MODE
MODE:精确权限匹配
/MODE:任何一类(u、g、o)对象的权限重只要能一位匹配即可,或关系,+从CentOS 7开始淘汰
-MODE:每一类对象都必须同事拥有指定权限,与关系
0 表示不关注
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于-ls>file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \:对查找到的每个文件执行由COMMAND指定命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \:对查找到的每个文件执行由COMMAND指定的命令
{}:用于引用查找到的文件名称自身
例:
#备份配置文件,添加.orig这个扩展名
find -name ".conf" -exec cp {} {},.orig \;
#提示删除存在时间超过3天以上的joe的临时文件
find /tmp -ctime +3 -user joe -ok rm {} \;
#在主目录中寻找可被其他用户写入的文件
find ~ -perm -002 -exec chmod o-w {} \;
#查找/data下的权限为644,后缀为sh的普通文件,怎加执行权限
find /data -type f -perm 644 -name "*.sh" -exec chmod 755 {} \;
标签:pattern fstab 任务 nss 索引 comm 指定路径 命令 font
原文地址:https://www.cnblogs.com/oldzhang01/p/14156287.html