Linux中的find 命令是专门用于搜索文件的,其用法为:
find [path…] [expression]
-name:对应名称文件,匹配内容写在引号”“里面
-perm:对应权限文件,数字表示(如755)
-user:对应拥有者文件
-nouser:无用户文件,在/etc/passwd中没有的用户
-group:对应所属组文件
-nogroup:无所属组文件,在/etc/group中没有的组
-mtime -# | +# | #:对应最后修改时间(天)
(atime:最后访问时间;ctime:最后权限更改时间)
-type:文件类型(f | d | l | b | c | p)
-size #:对应大小文件(c为字节、b为block、k为kb、M为Mb、G为Gb,默认为b,1b=512字节)例:-size 10k
-exec:对匹配的文件执行相应命令,{}表示匹配的文件,注意{}和 \;之间要加空格
COMMAND {} \;
-prune:忽略指定目录中的查找,联合-path使用
-follow:如果遇到符号链接文件,就跟踪至链接所指向的文件。-a:and 并
-o:or 或
!:取反
+:超过
-:低于
例1:查询以host开头的文件:
[root@super ~]# find /etc -name “host*” -print
例2:查询除了用户zff以外的所有用户文件(一定要加-o -print):
[root@super ~]# find /home -path “/home/zff” -prune -o -print
xargs:将前面的执行结果当做后面命令的参数(管道符 | 是把前面命令的标准输出作为后一个命令的标准输入)
(与-exec只有用法上的区别,执行效果相同)
例3:删除/var/log目录下7天以上没改变的文件:
[root@super ~]# find /var/log -mtime +7 | xargs rm
例4:查找ls命令安装包的详细信息:
[root@super ~]# which ls | xargs rpm -qi
find命令仅是针对文件名的查找,不能查看文件内容。
例5:查询/etc目录下含有”root”关键字的文件内容:
[root@super ~]# find /etc -type f -exec grep “root” {} \;
或使用find配合xargs命令(会列出文件路径):
[root@super ~]# find /etc -type f | xargs grep “root”
其他补充:
1、 在命令最后加-print打印查询结果,最好养成习惯加上
2、 linux中的命令是从上往下、从左往右执行的。(命令优先级)