Linux基础教程 linux中使用find命令搜索文件常用方法记录

find是linux非常强大的搜索命令,通过manfind查看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进行说明。

mtimen:找出前第n天改动过的文件

mtime+n:找出n天前改动过的文件,不包括第n天,用数学的区间表示就是(-∞,-n)

mtime-n:找出n天内改动过的文件,不包括第n天,用数学的区间表示就是(-n,0]

其中-∞表示很久很久以前,0表示今天。用数轴来表示就很明显了。

linux中find命令时间选项测试

找出今天有改动的文件

$find/homemtime0

这边0就是表示第0天,就是今天了。这个方法用来指定查找某天修改过的文件很有用,例如今天是12月30日,想找出28日修改的文件,将0修改成2就可以了。如下:

$find/homemtime2

找出2天内改动的文件

$find/homemtime-2

用区间表示为(-2,0],显然只有-1和0两个数字,分别表示昨天和今天。

找出2天前改动的文件

$find/homemtime+2

c、通过用户或者用户组来查找文件

这类选项相对也常用些。常用的有:

-uidn:搜索所属用户编号为n的文件

-gidn:搜索所属用户组编号为n的文件

-username:搜索所属用户名为name的文件

-groupname:搜索所属用户组名为name的文件

搜索所属用户名为root的文件

$find/-user'root'

总结

find命令的选项非常多,有需要了解其他选项的可以参考man手册。和locate相比,find会实际扫描磁盘,相对来说会慢些,小编建议能用locate搞定的就用locate搞定。