Linux find命令详解,查找时非管道排除目录

find是linux 命令,它将档案系统内符合 expression 的档案列出来。你可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find 根据下列规则判断 path 和 expression,在命令列上第一个 – ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。
find命令的参数

pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
# -print 将查找到的文件输出到标准输出
# -exec   command   {} \;      —–将查到的文件执行command操作,{} 和 \;之间有空格
# -ok 和-exec相同,只不过在操作前要询用户

现在来详细说说-prune

find [-path ..] [expression] 在路径列表的后面的是表达式

-path "/usr/kinggoo" -prune -o -print 是 -path "/usr/kinggoo"-a -prune -o -print 的简写表达式按顺序求值, -a 和 -o 都是短路求值,与 shell 的 && 和 || 类似如果 -path "/usr/kinggoo" 为真,则求值 -prune , -prune 返回真,与逻辑表达式为真;否则不求值 -prune,与逻辑表达式为假。如果 -path "/usr/kinggoo" -a -prune 为假,则求值 -print ,-print返回真,或逻辑表达式为真;否则不求值 -print,或逻辑表达式为真。如果要加其他选项需要加在-o之后(下面会有例子)

这个表达式组合特例可以用伪码写为

避开多个文件夹

圆括号表示表达式的结合。

\ 表示引用,即指示 shell 不对后面的字符作特殊解释,而留给 find 命令去解释其意义

详细例子:

查找某一确定文件,-name、-type等选项加在-o 之后

例:

望有帮助!

- THE END -
版权声明:
转载原创文章请注明,文章出处://kinggoo.com
原文地址:https://kinggoo.com/sysfinddetail.htm
发表评论?

3 条评论。

  1. 如何复制4层以上的文件目录结构,不要文件(文件太大,不适合拷贝)?

    答案:最大四层用 find / -type d -maxdepth 4
    答案:四层以上用这个 find / -type d -mindepth 4

  2. $@为传入的参数,是被包住的
    iregex忽略大小写
    相关资料
    GNU的find支持多种风格的正则表达式,用-regextype 指定所使用的正则表达式类型,可选的有emacs(默认),posix-awk,posix-basic,posix-egrep,posix-extended,喜欢了grep -E,所以我就用posix-egrep了

    find / -regextype “posix-egrep” -regex “.*/find”

  3. 记录一下群里一个人的问题
    find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -regextype posix-egrep -iregex ‘(.*\/Makefile|.*\/Makefile\..*|.*\.make|.*\.mak|.*\.mk)’ -type f -print0 | xargs -0 grep –color -n “$@”
    我的简单解答
    find . -name .repo -prune -o -name .git -prune -o -path ./out -prune -o -regextype posix-egrep -iregex
    不行 就执行 -prune -o 后面的 一直到 最后一个-prune -o 使用正则表达式 e-grep类型的 或略大小写
    -print0 是防止文件名里有空 影响find 后的xargs

发表评论


此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据