Linux下find命令在目录结构中搜索⽂件,并执行指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强大。find命令可以使用诸如文件名、文件大小、文件属性、修改时间和类型等条件进行搜寻。当find命令找到了那些与搜索条件相匹配的文件时,系统将把满足条件的所有文件显示出来。由于 find具有强大的功能,所以它的选项也很多,所以我们需要花时间来了解一下。
在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历⼀个大的⽂件系统可能会花费很长的时间(这⾥里是指 30G字节以上的文件系统)。
- 命令格式:
find pathname -option [-print -exec -ok …] - 命令参数
<1>pathname:find命令所要查找的目录路径。例如用”.“表示当前目录;用”/”表示系统根目录。
<2>-print:find命令将匹配到的文件输出到标准输出。
<3>-exec:find命令对匹配到的文件执行该参数所给出的shell命令。 相应的形式为:-exec command {} \(注意”{}”和”\”之间有空格)
<4>-ok:和-exec的作用相同,只不过-ok是以更安全的模式来执行shell命令,在执行每一个命令之前,都会让用户确定是否执行。 命令选项
1.-name :按照文件名查找文件
查找该目录下以“xx”开头的文件
例如:find -name “te*” (“*”表示通配任意的字符)
查找该目录下以“xx”结尾的文件
例如:find -name “*.c”
2.-perm:按文件权限查找文件
例如:查找权限为644的文件
3.-prune:使用这⼀选项可以使find命令不在当前指定的目录中查找,如果同时使用-depth选项,那么-prune将被find命令忽略
例如:在当前目录下查找后缀为.c的文件,不在class1下找
4.-user :按照文件属主来查找文件
5.-group :按照文件所属组来查找文件
6.-find -mtime、find -atime、find -ctime:按时间进行查找
<1>mtime:文件内容更改时间;atime:文件最后一次访问时间;ctime:文 件属性更改时间。
<2>time -N代表N天以内; time +N代表N天以前。
<3>ctime、mtime、atime表示“天”;cmin、mmin、amin,表示“分钟”。
但是为什么上图中有的文件时间却不是三天以内的呢?这是因为不是三天以内修改的文件都是目录文件,有些是目录下面的隐藏或者非隐藏文件是在三天以内修改的,因此这个目录也会被列出成为3天以内修改的文件。
7.-nogroup:查找无有效所属组的文件,即该文件所属的组在/etc/groups中不存在。
8.-nouser:查找无有效属主的文件,即该文件的属主在/etc/passwd中不存在
9.newer file1 ! file2 :查找更改时间比文件file1新但比文件file2旧的文件
10.size n:[c]:查找文件长度为n块的文件,带有c时表示文件长度以字节计
11.type:查找某一类型的文件
<1>b - 块设备文件
<2>d - 目录文件
<3>c - 字符设备文件
<4>p - 管道文件
<5>l - 符号链接文件
<6>f - 普通文件
总结:
以上命令都可以一次使用多个,使用多条命令可以用更多的条件来缩小需要查找的文件范围,帮助我们更快的找到所要查找的文件,这就需要我们记住这些find指令。