linux文件查找命令find使用示例

find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
  • OPTIONS参数: -P、-L、-H,控制软连接的对待方式,用的不多;
  • 查找起始路径: 就是要查找的目录路径,相对路径和绝对路径都可以;
  • 查找条件: -name 、 -type 、 -size 、 -mtime……以下再做详细说明;
  • 处理动作: -print 、 -ls 、 -delete 、 -exec COMMAND {} \; ……以下再做详细说明。

查找条件的详细说明并举例

一、 根据文件名称查找

  • -name “PATERN” : 根据文件名称查找;
  • -iname “PATERN” : 根据文件名称查找( 不区分名称字母大小写 );
  • -regex PATTERN : 基于正则表达式的模式查找,匹配的是整个路径,而非单个文件名;

二、根据文件的类型查找

  • -type f :普通文件;
  • -type d :目录文件;
  • -type l :符号链接文件;
  • -type b :块设备文件;
  • -type c :字符设备文件;
  • -type p :管道文件;
  • -type s :套接字文件;

三、 根据文件的大小查找 -size [+|-] [k|M|G]

1、1k时:a3只有15个字节,也被算做1k来查询,即条件符合大于零k,小于等于1k;
2、+1k时:a和a1满足大于1k的条件;
3、-62k时:只有a3满足大于等于零k,小于等于 61k的要求。

四、 根据文件的时间戳查找

  • -atime : 文件的最后访问时间;
  • -mtime : 文件的最后修改时间;
  • -ctime : 文件(权限)最后改变时间;

以-mtime为例说明如下:

  • -mtime +n : 对文件数据的最近一次修改是在(n+1)*24 小时及其之前的所有时间内, 等价于最后修改时间与当前的时间差大于等于(n+1)*24小时;
  • -mtime n : 对文件数据的最近一次修改是在 n*24 小时之前的24 小时内,等价于最后修改时间与当前的时间差大于等于 n*24小时,小于(n+1)*24小时;
  • -mtime -n : 对文件数据的最近一次修改是在 n*24 小时内, 等价于最后修改时间与当前的时间差小于 n*24小时;
#以下两条命令的效果是等价的
find /www/01h_net/ -mtime 2 -type f -ls
find /www/01h_net/ -mtime +1 -mtime -3 -type f -ls

time是以24小时为单位,min是以分钟为单位,如: -amin 、 -mmin 、 -cmin 。

五、查找时避开指定的子目录

find /www/wdlinux/web -path "/www/wdlinux/web/wp-content" -prune -o -print

以上命令将会查找/www/wdlinux/web目录下除wp-content子目录以外的所有文件。

#避开多个指定的子目录
find /www/wdlinux/web \( -path /www/wdlinux/web/wp-content -o -path /www/wdlinux/web/wp-admin \) -prune -o -print

注意:避开子目录的语句必须紧跟在目标目录后面,通常来讲也就是放在其他查询条件的前面,例如:

find /www/wdlinux/web \( -path /www/wdlinux/web/wp-content -o -path /www/wdlinux/web/wp-admin \) -prune -o -type f -mtime -2 -print

处理动作说明

  • -print:输出至标准输出,默认动作;
  • -ls:输出文件的详细信息,类似于对查找到的文件执行“ls -l”命令;
  • -delete:删除查找到的文件;
  • -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
  • -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认;
  • -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;