[关闭]
@wzhang1117 2014-05-26T13:46:32.000000Z 字数 1617 阅读 2156

find命令

linux find xargs


1.基本用法

  1. #查找/var/log下文件名中包含error的文件
  2. find /var/log -name "*error*"
  3. #-name后可以使用通配符,但是必须使用引号或反斜杠
  4. find /var/log -name \*error\*
  5. #查找/var/log下所有普通文件
  6. find /var/log -type f
  7. #-type后常用的有d目录,f普通文件,l符号链接
  8. find /var/log -type d
  9. find /var/log -type -l
  10. #查找修改时间在3天以内的文件
  11. find /var/log -mtime -3
  12. #-3表示最近两天,+3表示3天以前,3表示前第三天
  13. #-atime表示访问时间,-ctime表示文件状态变化时间
  14. find /var/log -mtime +3
  15. find /var/log -mtime 3
  16. find /var/log -atime 3
  17. find /var/log -ctime 3
  18. #还有-mmin -amin -cmin,时间单位为分钟
  19. #按用户查找
  20. find /var/log -user root
  21. #按权限查找
  22. find /var/log -perm 755

2. 高阶用法

2.1 条件组合

默认情况下所有的条件都是与的关系,如果需要查找文件名中包含error或access的文件,!括号需要转义,注意(和)前后都需要空格

  1. find /var/log -type f \( -name "*error*" -o -name "*access*" \)

2.2 exec选项

对每个查找到的文件执行一段脚本,注意最后三个字符空格反斜杠和分号都不能少

  1. find /var/log -type f -exec ls -l {} \;

2.3 print选项

  1. #下面两个命令的输出是一样的
  2. find /var/log -type f -print
  3. find /var/log -type f
  4. #下面两个命令的输出不一样,第一种情况不仅输出了ls -l的结果,还输出了find的结果,一般情况下不需要使用-print
  5. find /var/log -type f -print -exec ls -l {} \;
  6. find /var/log -type f -exec ls -l {} \;

2.4 与xargs命令结合使用

作用和exec类似,但是比exec更加高效可靠

  1. #下面两条命令实现相同的功能(-r表示如果find结果为空,则不构造ls命令,如果不适用-r,依然会执行 ls -l命令)
  2. find /var/log -type f -exec ls -l {} \;
  3. find /var/log -type f | xargs -r ls -l
  4. #!如果文件名中有空格或其他特殊空白符,上面的命令会出错,更可靠的命令如下,-print0表示find的输出结果以NULL分割,-0表示以NULL分割输入
  5. find /var/log -type f -print0 | xargs -0 -r ls -l
  6. #还可以使用下面的方式
  7. find /var/log -type f -print0 | xargs -0 -r -i ls -l {}
2.4.1 xargs示例
  1. #查找日志文件中GET 500错误
  2. find /var/log -type f | xargs grep " \"GET .* 500 "
  3. #重命名当前目录下所有.JPG后缀为.jpg
  4. find . -type f -name "*.JPG" -print0 | xargs -0 -r -i rename "s/.JPG$/.jpg/" {}
  5. #修改apache配置的时候,由于版本较多,经常出现不知道配置项在那个配置文件中
  6. #如关闭apache目录浏览功能,google之后得到结果需要修改Indexes选项,通过下面的命令可以查找Indexes的出现
  7. find /etc/apache2 -type f | xargs grep " Indexes "

参考
A Unix/Linux “find” Command Tutorial
wiki: xargs
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/find.html

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注