当前位置:  首页  >  服务器技术  >  Linux/unix  >  Linux命令

linux中使用find命令搜索文件常用方法记录

find是linux非常强大的搜索命令,通过manfind查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间。笔者自己总结了下,整理出find常用的使用方法。

find是linux非常强大的搜索命令,通过man find查看find手册,可以发现find的说明一屏接一屏,估计要看完也得花不少时间。笔者自己总结了下,整理出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命令时间选项测试

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

吐了个 "CAO" !
RankList | 热门文章
扫码关注 PHP1 官方微信号
Recommend | 推荐阅读
PHP1.CN | 中国最专业的PHP中文社区 | PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | PHP问答
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved PHP1.CN 第一PHP社区 版权所有