find是linux非常强大的搜索命令,通过man find查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间。兄弟连Linux培训小编总结了下,整理出find常用的使用方法。
1、命令格式
find 搜索路径 搜索表达式
搜索路径:这个比较容易理解,就是指定的搜索目录,比如/etc。搜索路径也可以同时指定多个,用空格分开就可以了,如/etc /home。
搜索表达式:find命令关键就是在表达式上,表达式的选项非常多。以下命令测试主要根据表达式的选项来划分。
2、命令测试
a、以文件名来搜索文件
这个功能蛮常用的,示例如下:
$ find /etc -name 'apache2'
/etc/default/apache2
/etc/php5/apache2
/etc/apache2
/etc/logrotate.d/apache2
/etc/cron.daily/apache2
/etc/init.d/apache2
这个-name选项比较常用,后面接一个要搜索的文件名。上例用来搜索etc目录下文件名是apache2的文件。另外有一个要注意下,这里是精确搜索,只有文件名是apache2才会被搜索到。如果需要模糊搜索,可以用正则表达式,如下例:
$ find /etc -name 'apache*'
b、根据文件时间进行搜索
有时想找出最近修改的文件,就可以用时间选项,时间选项有三种atime、mtime、ctime,以下用mtime进行说明。
mtime n :找出前第n天改动过的文件
mtime +n :找出n天前改动过的文件,不包括第n天,用数学的区间表示就是(-∞, -n)
mtime -n:找出n天内改动过的文件,不包括第n天,用数学的区间表示就是(-n,0]
其中-∞表示很久很久以前,0表示今天。用数轴来表示就很明显了。
linux中find命令时间选项测试
找出今天有改动的文件
$ find /home mtime 0
这边0就是表示第0天,就是今天了。这个方法用来指定查找某天修改过的文件很有用,例如今天是12月30日,想找出28日修改的文件,将0修改成2就可以了。如下:
$ find /home mtime 2
找出2天内改动的文件
$ find /home mtime -2
用区间表示为(-2,0],显然只有-1和0两个数字,分别表示昨天和今天。
找出2天前改动的文件
$ find /home mtime +2
c、通过用户或者用户组来查找文件
这类选项相对也常用些。常用的有:
-uid n : 搜索所属用户编号为n的文件
-gid n :搜索所属用户组编号为n的文件
-user name :搜索所属用户名为name的文件
-group name:搜索所属用户组名为name的文件
搜索所属用户名为root的文件
$ find / -user 'root'
总结
find命令的选项非常多,有需要了解其他选项的可以参考man手册。和locate相比,find会实际扫描磁盘,相对来说会慢些,小编建议能用locate搞定的就用locate搞定。