如何抑制“检测到文件系统循环”警告对“find”命令退出状态的影响?

如何抑制“检测到文件系统循环”警告对“find”命令退出状态的影响?

我使用find命令在包含一些需要解析的符号链接的目录树中查找早于一定分钟数的所有常规文件:

find -L . -type f -mmin +300 -print

但是这个目录树有一些循环的符号链接,会导致find发出如下错误:

/usr/bin/find: File system loop detected; ‘/storage/tester1/data/webdav’ is part of the same file system loop as ‘/storage/tester1/data’

我无法从目录结构中删除此循环,并且无法避免使用密钥,-L但我需要抑制此错误以获得正确的退出代码以find检测任何真实的可能的错误(而不是'检测到循环'警告)。
重定向特殊错误 2>/dev/null无能为力,因为我仍然获得退出状态1由于此循环,在任何搜索中都无法检测到任何内容的存在或不存在真实的在我的脚本中搜索时出错。

我怎样才能避免它并获得退出状态0在具有符号链接循环的目录树中成功搜索?

注意:我知道该网站上有一些关于“检测到循环”的类似问题,但所有这些问题都可以通过删除以下符号链接来解决(在我的情况下这是不可能的),所以这个问题不是重复的。请不要关闭它!

答案1

我没有足够的声誉来发表评论。

您可以获取 find 的输出并使用 grep 进行反转匹配 ( -v) 来排除包含“检测到文件系统循环”的任何内容:

find / -type d -name bar 2>&1 | grep -v "File system loop detected"

一个例子:

cd /usr
find . -type d -name bar 2>&1

./share/locale/bar

查找:'./share/polkit-1/rules.d':权限被拒绝

echo $?

1

find . -type d -name bar 2>&1 | grep -v "Permission denied"

./share/locale/bar

echo $?

0

相关内容