Linux find命令排除目录查找

个人使用find命令,常用参数大致有如下几种
# 普通查找文件 *.*
find / -name "*.*" -type f

# 查找大于10M的文件,并显示文件大小
find / -type f -size +10M -exec du -h {} \;

# 查找文件中包含指定的字符Suvan
find / -type f -name "*.*"|xargs grep "Suvan"
排除目录查找怎么写?使用-prune选项

find的详细用法可见man find

-prune可以理解为一个判断语句,当-prune前面的表达式结果为真则为true,否则为false。若-prune后面跟的是-o,且-prune之前的表达式为true,此时按照c语言的语法来表示为true || expr,说人话就是-o之前的结果为true,则-o之后的表达式将不再执行。

需要注意的几点
  1. -path 路径不能以/结尾 比如路径/vobs/gliethttp/signature,不能写成/vobs/gliethttp/signature/,这是 硬性规定
  2. 若find . 则-path必须使用相对路径,其他情况则须使用绝对路径
示例
# 显示除Suvan开头的所有目录或文件,以及名为suvan的目录或文件之外的所有文件
find . −name Suvan∗ −o −name suvan -prune -o -print

# 显示除当前目录./suvan之外的所有文件
find . -path ./suvan -prune -o -print
# 只打印当前目录下的./suvan目录
find . -path ./suvan -prune -a -print
# 打印除.svn下的所有.c文件
find . -name .svn -prune -o -iname '*.c' -a -print
# 或者使用-path参数
find . -path ./.svn -prune -o -print

评论

评论正在提交中...请稍后
评论提交成功...