Skip to main content
 首页 » 操作系统

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

  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搞定。

评论列表暂无评论
发表评论
微信