我需要隐藏来自以下来源的所有权限被拒绝消息:
find . > files_and_folders
我正在尝试何时出现此类消息。我需要收集所有不会出现的文件夹和文件。
是否可以将权限级别定向到files_and_folders
文件?
如何同时隐藏错误?
最佳答案
用途:
find . 2>/dev/null > files_and_folders
这不仅隐藏了 Permission denied
当然是错误,但都是错误消息。
如果您确实想保留其他可能的错误,例如符号链接(symbolic link)上的跃点太多,但不想保留权限被拒绝的错误,那么您可能不得不猜测您没有很多名为 '权限被拒绝'并尝试:
find . 2>&1 | grep -v 'Permission denied' > files_and_folders
<小时/>
如果您严格只想过滤标准错误,则可以使用更精细的构造:
find . 2>&1 > files_and_folders | grep -v 'Permission denied' >&2
find
上的 I/O 重定向命令是:2>&1 > files_and_folders |
。
管道将标准输出重定向到 grep
命令并首先应用。 2>&1
将标准错误发送到与标准输出相同的位置(管道)。 > files_and_folders
将标准输出(但不是标准错误)发送到文件。最终结果是写入标准错误的消息被沿着管道发送,并且常规输出 find
被写入文件。 grep
过滤标准输出(您可以决定您想要的选择性,并且可能必须根据区域设置和操作系统更改拼写)和最终的 >&2
意味着幸存的错误消息(写入标准输出)再次进入标准错误。最终重定向在终端上可以被视为可选,但在脚本中使用它是一个非常好的主意,以便错误消息出现在标准错误上。
这个主题有无穷无尽的变化,具体取决于您想要做什么。这将适用于具有任何 Bourne shell 衍生品(Bash、Korn 等)的任何 Unix 变体以及 find
的任何 POSIX 兼容版本。 .
如果您希望适配find
的特定版本您的系统上可能有其他可用选项。 GNU find
特别是有许多其他版本中不可用的选项 - 请参阅当前接受的一组此类选项的答案。
关于bash - 如何从 "permission denied"中排除所有 "find"消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/762348/