
我在书中反反复复的提到“Linux系统中的一切都是文件”,接下来您就要感受到这份力量了。咱们在Linux系统中的搜索工作一般都是通过find命令来完成的,它可以根据不同的文件特性来做为匹配项(如文件名、大小、修改时间、权限等信息),一旦匹配到了则会默认为用户显示到屏幕上来,基础的匹配项目请见下表即可,我主要讲解下“--exec”参数重要的作用,这个参数是用于将find命令搜索到的结果交由给后面的命令再进一步做处理,十分类似于咱们将在下一章中提到的管道符技术。
编辑
参数作用
-name匹配名称
-perm匹配权限(mode为完全匹配,-mode为包含即可)
-user匹配所有者
-group匹配所有组
-mtime -n +n匹配修改内容的时间(-n指n天以内,+n指n天以前)
-atime -n +n匹配访问文件的时间-n指n天以内,+n指n天以前
-ctime -n +n匹配修改权限的时间-n指n天以内,+n指n天以前
-nouser匹配无所有者的文件
-nogroup匹配无所有组的文件
-newer f1 !f2匹配比文件f1新却比f2旧的文件
--type b/d/c/p/l/f匹配文件类型(块设备、目录、字符设备、管道、链接文件、文件文件)
-size匹配文件的大小(+50k查找超过50k的文件,而-50k则代表查找小于50k的文件)
-prune忽略某个目录
-exec {} \ 后面可接对搜索到结果进一步处理的命令(下面会有演示)
Linux系统中的配置文件根据FHS协议会被保存到/etc目录中(第六章精讲),如果咱们要想获取到该目录中所有以host开头的文件就可以这样做:
[root@linuxprobe ~]# find /etc -name "host*" -print
/etc/avahi/hosts
/etc/host.conf
/etc/hosts
/etc/hosts.allow
/etc/hosts.deny
/etc/selinux/targeted/modules/active/modules/hostname.pp
/etc/hostname
想要在整个系统中搜索所有权限中包括SUID权限的文件(第五章精讲),只需使用减号-4000即可:
[root@linuxprobe ~]# find / -perm -4000 -print
/usr/bin/fusermount
/usr/bin/su
/usr/bin/umount
/usr/bin/passwd
/usr/sbin/userhelper
/usr/sbin/usernetctl
参考:http://www.linuxprobe.com/chapter-02.html
两个方式:find命令或者shell脚本。
1、find命令
(1)find是linux下用于查找文件的通用方法。
(2)find语法: find [指定查找目录] [查找规则] [查找完后执行的action]
(3)例如:find /tmp -name wa* -type l ,是在/tmp下查找名为wa开头且类型为符号链接的文件。找到就表示存在。
2、shell脚本
(1)在进行文件的自动处理中常常需要自动判别,下面的脚本判断test.log是否存在,存在则显示文件存在,否则显示文件不存在。
(2)例子:编辑一个脚本判断文件是否存在。
vi t.sh
#!/bin/bash
if [ -e /temp/test.log ];then //这里是判断语句,-e表示进行比较结果为真则存在
echo "文件存在"
else
echo "文件不存在"
fi
保存退出
执行:
sh t.sh
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)