Linux下find命令在目录结构中搜索文件,并执行指定的操作。
linux下find命令提供了相当多的查找条件,功能很强大,所以它的选项也很多,其中有许多的选项都值得我们深入的了解学习。
命令格式:find pathname -options [-print -exec -ok ...]
命令功能:用于在文件树中查找文件,并作出相应的处理(可能访问磁盘)
命令参数:
pathname:find命令所查找的目录路径。例如,用.来表示当前目录,用/来表示系统根目录。
-print:find命令将匹配的文件输出到标准输出。
-exec:find命令对匹配的文件执行该参数所给出的shell命令。
-ok:和-exec的作用相同,只是以一种更安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
下面就进入find命令选项的功能详情:
1、-name 按照文件名查找文件
文件名选项是find命令最常用的选项,可以单独使用该选项,也可以其他选项一起使用。 可以使用某种文件名模式来匹配文件,注意要用引号将文件名模式引起来。 不管当前路径是什么,可用~作为 ‘pathname‘参数,波浪号~代表了你的$HOME目录。
例如:
想要在当前目录及子目录中查找所有的‘ *.log‘文件,可用:
想要的当前目录及子目录中查找文件名以一个大写字母开头的文件,可用:
想要在/etc目录中查找文件名以host开头的文件,可用:
想要查找$HOME目录中的文件,可用:
2、-perm 按照文件权限查找文件
按文件权限模式来查找文件的话。最好使用八进制的权限表示法。
在当前目录下查找文件权限位为644的文件,可用:
3、-prune 忽略某个目录
使用-prune选项来指出需要忽略的目录。如果同时使用了-depth选项,那么-prune选项就会被find命令忽略。
在file1目录下查找文件,但不希望在file1/file3目录下查找,可以用:
4、-user 按照文件属主来查找文件
-nouser 查找无有效属主的文件
在$HOME目录中查找文件属主为yangning的文件
为了查找属主帐户不存在的文件,可以使用-nouser选项。
在/home目录下查找所有的这类文件
如:find /home -nouser -print
5、-group 按照文件所属的组来查找文件
-nogroup 查找五有效所属组的文件
就像user选项一样,针对文件所属于的用户组。
在/apps目录下查找属于gem用户组的文件,可以用:
find /apps -group gem -print
要查找没有有效所属用户组的所有文件,可以使用nogroup选项。
从文件系统的根目录处查找这样的文件,可用:
find / -nogroup -print
6、-type 查找某一类型的文件
b -- 块设备文件
d -- 目录
c -- 字符设备文件
p -- 管道文件
l -- 符号链接文件
f -- 普通文件
在当前目录下查找所有的目录
在/etc目录下查找所有的符号链接文件
7、-size n: [c] 查找文件长度为n块的文件,带c时文件长度以字节计
在当前目录下查找文件长度大于1000字节的文件,可用:
在当前目录下查找长度超过10块的文件(一块等于512字节)
8、-depth 查找文件时,首先查找当前目录中的文件,然后在其子目录中查找
从文件系统的根目录开始,查找一个名为CON.FILE的文件。
它将首先匹配所有的文件然后再进入子目录中查找
9、-newer file1 !file2 查找更改时间比file1新但比file2旧的文件
查找更改时间比文件file新但比文件file1旧的文件
10、-mtime -n +n 按照更改时间查找文件
-atime -n +n 按照访问时间查找文件
-ctime -n +n 按照改变时间查找文件
用减号-来限定更改时间在距今n日以内的文件,而用加号+来限定更改时间在距今n日以前的文件。
希望在系统根目录下查找更改时间在10日以内的文件,可以用:
以上是我对find指令一些选项的学习总结,难免有疏漏,见谅!!!!