Linux下find命令在目录结构中搜索⽂件,并执⾏指定的操作。
Linux下find命令提供了相当多的查找条件,功能很强⼤。由于
find具有强⼤的功能,所以它的选项也很多,其中⼤部分选项都值
得我们花时间来了解⼀下。即使系统中含有网络⽂件系统( NFS),
find命令在该⽂件系统中同样有效,只你具有相应的权限。
现在我就find这条命令及其常用选项做个描述:
- 命令格式
find pathname -options [-print -exec -ok …] - 命令参数
pathname: find命令所查找的目录路径。例如⽤.来表⽰当前⺫
录,⽤/来表⽰系统根目录。
-print: find命令将匹配的⽂件输出到标准输出。
-exec: find命令对匹配的⽂件执⾏该参数所给出的shell命
令。相应命令的形式为’command’ { } \;,注意{ }和\;
之间的空格。
-ok: 和-exec的作⽤相同,只不过以⼀种更为安全的模式来执⾏
该参数所给出的shell命令,在执⾏每⼀个命令之前,都会给出提
⽰,让⽤户来确定是否执⾏;
- 命令选项
-name 按照⽂件名查找⽂件,查找时文件名大小写敏感(-iname 不区分大小写),只能搜索到文件名,如果需要搜索文件内容里包含的特定字符串,需要用grep(用的最常见);
-perm 按照⽂件权限来查找⽂件。
-prune 使⽤这⼀选项可以使find命令不在当前指定的目录中查
找,如果同时使⽤-depth选项,那么-prune将被find命令忽
略。
-user 按照⽂件属主来查找⽂件。
-group 按照⽂件所属的组来查找⽂件。
-mtime -n +n 按照⽂件的更改时间来查找⽂件, - n表⽰⽂
件更改时间距现在n天以内,+ n表⽰⽂件更改时间距现在n天以
前。find命令还有-atime和-ctime 选项,但它们都和-m time
选项相同。
-nogroup 查找⽆有效所属组的⽂件,即该⽂件所属的组在/etc/groups中不存在。
-nouser 查找⽆有效属主的⽂件,即该⽂件的属主在/etc/
passwd中不存在。
-newer file1 ! file2 查找更改时间⽐⽂件file1新但⽐⽂
件file2旧的⽂件。
-type 查找某⼀类型的⽂件,诸如:
b - 块设备⽂件。
d - 目录。
c - 字符设备⽂件。
p - 管道⽂件。
l - 符号链接⽂件。
f - 普通⽂件。
-size n:[c] 查找⽂件⻓度为n块的⽂件,带有c时表⽰⽂件⻓
度以字节计。
-depth:在查找⽂件时,⾸先查找当前目录中的⽂件,然后再在其
⼦目录中查找。
-fstype:查找位于某⼀类型⽂件系统中的⽂件,这些⽂件系统类
型通常可以在配置⽂件/etc/fstab中找到,该配置⽂件中包含了
本系统中有关⽂件系统的信息。
-mount:在查找⽂件时不跨越⽂件系统mount点。
-follow:如果find命令遇到符号链接⽂件,就跟踪⾄链接所指向
的⽂件。
-cpio:对匹配的⽂件使⽤cpio命令,将这些⽂件备份到磁带设备
中。