Linux下的find命令的查询功能十分强大,下面详细介绍find的大多数用法:
工作方式:沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作。
1.根据文件时间搜索
atime(access time,访问时间):即上次访问这个文件的时间
mtime(modification time,修改时间):即文件内容上次发生改变的时间
ctime(change time,改变时间):文件属性(比如权限)修改的时间,一般mtime改变时ctime也会改变
-atime、-mtime、-ctime都可作为find的时间参数,它们带上+n或-n表示n天之前或n天之内被更动过的档案档名。
示例:找出系统上3天内有更动内容(mtime)的档案档名:
find /var -mtime -3
刚好在3天前有更动内容的档案档名:
find /var -mtime 3
大于3天前有更动内容的档案档名:
find /var -mtime +3
这些的时间是基于天的,还有基于分钟的:
-amin、-mmin、-cmin
用法与上面相同。
find的另一个漂亮的特性是-newer参数,我们可以指定一个用于比较时间戳的参考文件,然后找出比参考文件更新的所有文件。
2.根据使用者或者组名搜索
-user/-group:按照文件所属的主人/组查找文件
-nouser/-nogroup:寻找档案的拥有者/群组不存在/etc/passwd或/etc/group的人或档案
示例:查找/home下属于hm的档案
find /home -user hm
查找系统中不属于任何人的档案
find / -nouser
3.根据档案权限及名称搜索
-name filename:查找文件名为filename的文件
-perm mode:查找文件权限为mode的文件,mode为类似chmod的属性值
示例:查找权限为644的文件
find . -perm 644
4.根据文件类型搜索
linux下的文件类型:
普通文件 : f
符号文件 : l
目录 : d
字符设备 : c
块设备 : b
套接字 : s
Fifo(管道文件) : p
-type TYPE:查找文件名的类型为TYPE的
如:
find . -type f
5.根据文件大小搜素
-size[+ -] SIZE:搜索比SIZE要大(+)或小(-)的文件。
示例:查找比50KB要大的文件
find . -size +50k
除了k之外,还有其他文件大小单元
b——块(512字节)
c——字节
w——字
k——千字节
M——兆字节
G——吉字节
6.进行额外的动作
-exec:一直到 \; 是关键词,代表 find 额外动作的开始 (-exec) 到结束 (\:)
示例:查找根目录下大于555字节小于580字节的文件
find /root -size -555c -size +580c -exec ls -ld {} \;
7.否定参数
用" ! "作为否定参数
示例:搜索当前目录所有不以.txt结尾的文件
find . ! -name ".txt"
8.find与xargs结合
xargs:将标准输入转换成命令行参数
示例:将匹配到的文件删除
find . -type f -name "*.txt" |xargs -0 rm -f <span class="pln"> </span>
9.删除匹配的文件
-delete可以实现
find . -type f -name "*.swp" -delete
10.根据目录的深度搜索
-maxdepth/-mindepth:最大/最小深度限制,1表示只在当前目录,2表示向下两级等等
示例:1. 只列出当前目录下的所有普通文件
1. find . -maxdepth 1 -type f
2. find . -mindepth 2 -type f