Linux下 find 命令在目录结构中搜索,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能强大。其选项也很多。
1.命令格式:find pathname -options [-print -exec -ok ...] 注意:每一个选项前面跟随一个横杠-
2.命令功能:根据条件查找,并作出相应的处理(可能访问磁盘)
3.命令参数:pathname: find命令所查找路径;
目录介绍:. ./ 为当前目录 ,
/ $HOME ~ 为根目录及以下相当于所有目录
.. ../为父目录
指定多个目录 $ind /usr /home /tmp -name "*.test";在 /kk/tt/file三个目录中查找以.test结尾的文件)
-print: find命令将匹配的⽂件输出到标准输出;
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { }空格 \;
-ok: 和-exec的作⽤相同,在执行前询问用户是否确定执行;
4.命令选项:
-name 按照指定文件名查找 ,查找时文件名大小写敏感(-iname 不区分大小写),只能搜索到文件名,如果需要搜索文件内容里包含的特定字符串,需要用grep(用的最常见);
查找/目录下文件件名为test的文件
查找所有目录中名称中按照”.log”结尾的文件
find / -name "*.log"
-perm :按照文件权限来查找文件。
最好使用八进制数字权限表示法,但是也可以用符号表示 $find . -type f -perm
a=rwx-exec ls -l {} \;
查找当前目录下所有权限为755的文件,并设置成777
设置后:
注意:
-perm mode :查找的文件属性刚好等于 mode的,
-perm -mode :查找的文件属性必须要全部囊括 mode 的属性的文件,例如:我们要查找 -rwxr----- ,亦即744 的文件,使用 -perm -744,当一个档案的属性为 -rwxr-xr-x ,亦即 755时,也会被列出来, 因为 -rwxr-xr-x 的属性已经囊括了 -rwxr--r-- 的属性了,
所以:-mode其实就是查找比mode值大的文件
-perm +mode :查找档案属性『包含任一 mode 的属性』的文件,举例来说,我们查找 -rwxr-xr-x ,
亦即 -perm +755 时,但一个文件属性为 -rw------- 也会被列出來,因为它有 -rw.... 的属性存在 ;
-mtime -n +n 按照文件的更改时间来查找文件
注意:
单位都是以天计算的,可以使用mtime,atime或ctime选项
-mtime(medify time):文件内容修改时间
-atime(access time):文件被读取或者访问时间
-ctime(change time):文件状态变化时间(权限等,文件的移动也是由这个时间决定)
-amin n 查找系统中最后n分钟访问的文件
-atime n 查找系统中最后n天访问的文件
-cmin n 查找系统中最后n分钟被改变文件状态的文件
-ctime n 查找系统中最后n天被改变文件状态的文件
-mmin n 查找系统中最后n分钟被改变文件数据的文件
-mtime n 查找系统中最后n天被改变文件数据的文件
以上的这些时间都需要与一个值n结合使用;
需指定+n、n、-n;
- n表示文件更改时间距现在n天以内,
+ n表示文件更改时间距现在n天以前。
-type 查找某一类型的文件
诸如:b - 块设备文件。d - 目录。c - 字符设备文件。p - 管道文件。l - 符号链接文件。f - 普通文件。
size n
查找满足条件大小 的文件
-size +2M大于2M的文件
-size -1k小于1k的
-size 2M介于2M正负1M范围内的文件
-nogroup 查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
-nouser 查找无有效属主的文件,即该⽂件的属主在/etc/passwd中不存在。
-newer file1 ! file2 查找更改时间比file1新但比文件file2旧的文件。
... 还有若干选项举一反三;
find命令配合xargs使用
xargs是一条Unix和类Unix操作系统的常用命令。它的作用是将参数列表转换成小块分段传递给其他命令,以避免参数列表过长的问题;
在当前目录中查找以file打头的文件 ,然后把结果保存到/tmp/core.log 文件中:
#find . -name "file*" -print | xargs echo "" > /temp/core.log
在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限:
#find . -perm 777 -print | xargs chmod o-w