始终排除 find 命令中的路径

始终排除 find 命令中的路径

我有一个目录,其内容永远不会被 find 找到,所以我给 find 起了别名,如下所示:

alias find='find -not -path "*.sync*"'

问题是,现在 find 抱怨每当我使用类似find -depth.还有其他方法可以干净地做到这一点吗?

答案1

-not中不存在名为 的运算符find。你的意思!-path是在许多实现中找到的扩展find,但不是全部。

您的主要问题可能是所有路径名参数必须首先出现在find命令行上,如果您在扩展别名之后添加路径名类型参数,则会find以错误的顺序获得参数。

您的问题不存在通用解决方案,因为您可能需要find根据具体情况在要排除的路径之前或之后添加更多参数。

您可以尝试:

find() {
    path=$1
    shift
    command find "$1̈́" ! -path '*.sync' "$@"
}

但这只允许一种路径类型参数。

相关内容