Linux下find命令在目录结构中搜索⽂文件,并执⾏行指定的操作。 Linux下find命令提供了相当多的查找条件,功能很强大。由于 find具有强大的功能,所以它的选项也很多,其中⼤大部分选项都值 得我们花时间来了解⼀一下。即使系统中含有网络⽂文件系统( NFS), find命令在该⽂文件系统中同样有效,只你具有相应的权限。 在运行⼀一个⾮非常消耗资源的find命令时,很多⼈人都倾向于把它放在后台 执⾏行,因为遍历⼀一个⼤大的⽂文件系统可能会花费很⻓长的时间(这⾥里是指 30G字节以上的⽂文件系统)。
命令格式: find pathname -options [-print -exec -ok …]
1、-name 按照⽂文件名查找⽂文件
-exec
-ok
2、-perm 按照⽂文件权限来查找⽂文件。
3、-prune使⽤用这⼀一选项可以使find命令不在当前指定的目录中查 找,如果同时使⽤用-depth选项,那么-prune将被find命令忽略。
在当前目录下寻找后缀为.c的文件,不在C_Code目录下寻找
4、-user 按照⽂文件属主来查找⽂文件。
5、-group 按照⽂文件所属的组来查找⽂文件。
6、-mtime -n +n 按照⽂文件的更改时间来查找⽂文件, - n表⽰示⽂文 件更改时间距现在n天以内,+ n表⽰示⽂文件更改时间距现在n天以前。find命令还有-atime和-ctime 选项,但它们都和-m time 选项相同。
但是为什么有的时间却不是3三天以内的呢?这是因为不是三天以内的文件都是目录,而目录下面的隐藏或者非隐藏文件实在三天以内修改的,因此这个目录也会被列出成为3天以内修改的文件。
7、-nogroup 查找⽆无有效所属组的⽂文件,即该⽂文件所属的组在/etc/groups中不存在。
8、-nouser 查找⽆无有效属主的⽂文件,即该⽂文件的属主在/etc/ passwd中不存在
与7同理
9、-newer file1 ! file2 查找更改时间⽐比⽂文件file1新但⽐比⽂文 件file2旧的⽂文件。
10、-type 查找某⼀一类型的⽂文件
b - 块设备⽂文件。
d - 目录。
c - 字符设备文件。
p - 管道文件。
l - 符号链接⽂文件。
f - 普通⽂文件。
11、-size n:[c] 查找⽂文件长度为n块的⽂文件,带有c时表⽰示⽂文件长度以字节计。
例如:⼀个文件5556字节,可以这样写 find /root -size -5557c -size +5555c -exec ls -ld {} \; 即查找⼤大于5555字节⼩小于5557字节的⽂文件,以上查找的是/root 目录 find /root -size -500K -size +50K -exec ls -ld {} \;
12、-depth:在查找⽂文件时,⾸首先查找当前目录中的文件,然后再在其子目录中查找。
总结:find命令支持多个选项匹配,在输入命令时要注意空格,否则很容易出错,例如 -exec ls -l {} \;
要注意{}和\之间有空格,当然我们通常把{} \; 看成是一个整体。