Linux 下 find 命令在目录结构中搜索文件,并执行指定的操作;
Linux 下的 find 命令提供了相当多的查找条件,功能强大。即使文件中含有网络文件系统(NFS),find 命令在该文件系统中同样有效,只要你具有相应的权限;
在运行一个非常消耗资源的 find 命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里指 30G 字节以上的文件系统);
命令格式 - find pathname -options [-print -exec -ok ...]
命令功能 - 用于在文件树中查找文件,并作出相应的处理;
命令参数 -
pathname :find 命令所查找的目录路径。
-print :find 命令将匹配的文件输出到标准输出中;
-exec :find 命令对匹配的文件执行该参数所给出的 shell 命令;
-ok :和 -exec 的作用相同,只不过以一种更为安全的模式来执行该参数所给出的 shell 命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行;
命令选项 -
-name :按照文件名来查找文件;
-perm :按照文件权限来查找文件;
-prune :使用这一选项可以使 find 命令不在当前指定的目录中查找,如果同时使用 -depth ,那么 -prune 将会被 find 命令忽略;
-depth :从指定目录下的最深层的子目录开始查找;
-user<拥有者名称> :查找符合指定拥有者名称的文件或目录;
-group<群组名称> :查找符合指定之群组名称的文件或目录;
-nouser :超早无有效所属拥有者的文件,即该文件所属的拥有者在 /etc/passwd 中不存在;
-nogroup :查找无有效所属群组的文件,即该文件所属的组在 /etc/groups 中不存在;
-mtime -n +n :按照文件的更改时间来查找文件;
-newer file1 ! file2 :查找更改时间比文件 file1 新但比文件 file2 旧的文件;
-type 查找某一类型的文件:
-size n[c] :查找长度为 n 的文件,c 的类型有:
-fstype :查找位于某一类型文件系统中的文件,这些文件系统类型通常可以在配置文件 /etc/fstab 中找到,该配置文件中包含了本系统中有关系统文件的信息;
-mount :在查找文件时不跨越文件系统 mount 点;
-follow :如果 find 明星遇到符号链接文件,就跟踪至链接所指向的文件;
-cpio :对匹配的文件使用 cpio 命令,将这些文件备份到磁带设备中。
另外,下面三个的区别:
命令实例 -
实例一:查找当前目录下 2 天内访问过的文件;
命令
xxxxxxxxxx11find . -atime -2输出
xxxxxxxxxx151Qs-MacBook-Pro:personal qiu$ find . -atime -22.3./es1.html4./t1.json5./es1.js6./es1.css7./js1.js8./t19./t1/test110./t1/test1/dir111./t1/test1/dir1/dir212./t1/test1/dir1/dir313./t1/test1/dir1/dir114./t1/log2.log15./t1/log3.log实例二:根据关键字查找
命令
xxxxxxxxxx11find . -name "*.log"输出
xxxxxxxxxx81Qs-MacBook-Pro:personal qiu$ find . -name "*.log"2./t1/test1/dir1/dir2/log2.log3./t1/test1/dir1/dir2/log1.log4./t1/test1/dir1/dir3/log1.log5./t1/test1/dir1/dir1/log.log6./t1/test1/dir1/dir1/log1.log7./t1/log2.log8./t1/log3.log实例三:按文件大小查找
命令
xxxxxxxxxx11find . -size +10c -print输出
xxxxxxxxxx231Qs-MacBook-Pro:personal qiu$ find . -size +10c -print2.3./es1.html4./.DS_Store5./t1.json6./es1.js7./es1.css8./js1.js9./t110./t1/.DS_Store11./t1/test112./t1/test1/.DS_Store13./t1/test1/dir114./t1/test1/dir1/.DS_Store15./t1/test1/dir1/dir216./t1/test1/dir1/dir2/.DS_Store17./t1/test1/dir1/dir318./t1/test1/dir1/dir3/.DS_Store19./t1/test1/dir1/dir120./t1/test1/dir1/dir1/log.log21./t1/test1/dir1/dir1/.DS_Store22./t1/test1/dir1/dir1/log1.log23./t1/log3.log实例四:按照目录或文件的权限来查找
命令
x
1find /opt/soft/test/ -perm 777输出
xxxxxxxxxx51Qs-MacBook-Pro:personal qiu$ find /opt/soft/test/ -perm 7772/opt/soft/test/log_link.log3/opt/soft/test/test44/opt/soft/test/test5/test35/opt/soft/test/test3实例五:按类型查找
命令
xxxxxxxxxx11find . -type f -name "*.log"输出
xxxxxxxxxx91Qs-MacBook-Pro:personal qiu$ find . -type f -name "*.log"2./t1/test1/dir1/dir2/log2.log3./t1/test1/dir1/dir2/log1.log4./t1/test1/dir1/dir3/log1.log5./t1/test1/dir1/dir1/log.log6./t1/test1/dir1/dir1/log1.log7./t1/log2.log8./t1/log3.log9实例六:查找当前所有目录并排序
命令
xxxxxxxxxx11find . -type d | sort输出
xxxxxxxxxx11Qs-MacBook-Pro:personal qiu$ find . -type d | sort2.3./t14./t1/test15./t1/test1/dir16./t1/test1/dir1/dir17./t1/test1/dir1/dir28./t1/test1/dir1/dir39