我需要隐藏所有被拒绝的消息:
find . > files_and_folders
当这样的信息出现时,我正在做实验。我需要收集所有的文件夹和文件,它没有出现。
是否可以将权限级别直接指向files_and_folders文件?
如何同时隐藏错误?
我需要隐藏所有被拒绝的消息:
find . > files_and_folders
当这样的信息出现时,我正在做实验。我需要收集所有的文件夹和文件,它没有出现。
是否可以将权限级别直接指向files_and_folders文件?
如何同时隐藏错误?
当前回答
您可以使用grep -v逆匹配
-v, --invert-match select non-matching lines
是这样的:
find . > files_and_folders
cat files_and_folders | grep -v "permission denied" > files_and_folders
应该有魔力
其他回答
Use:
find . 2>/dev/null > files_and_folders
当然,这不仅隐藏了Permission denied错误,还隐藏了所有错误消息。
如果你真的想保留其他可能的错误,比如符号链接上的跳数太多,而不是权限被拒绝的那些,那么你可能不得不大胆猜测你没有很多被称为“权限被拒绝”的文件,然后尝试:
find . 2>&1 | grep -v 'Permission denied' > files_and_folders
如果你只想过滤标准误差,你可以使用更精细的结构:
find . 2>&1 > files_and_folders | grep -v 'Permission denied' >&2
The I/O redirection on the find command is: 2>&1 > files_and_folders |. The pipe redirects standard output to the grep command and is applied first. The 2>&1 sends standard error to the same place as standard output (the pipe). The > files_and_folders sends standard output (but not standard error) to a file. The net result is that messages written to standard error are sent down the pipe and the regular output of find is written to the file. The grep filters the standard output (you can decide how selective you want it to be, and may have to change the spelling depending on locale and O/S) and the final >&2 means that the surviving error messages (written to standard output) go to standard error once more. The final redirection could be regarded as optional at the terminal, but would be a very good idea to use it in a script so that error messages appear on standard error.
这个主题有无穷无尽的变化,取决于你想做什么。这将在任何带有任何Bourne shell衍生物(Bash, Korn,…)的Unix变体和任何posix兼容版本的find上工作。
如果您希望适应系统上的find的特定版本,可能有可用的替代选项。特别是GNU find有许多其他版本没有的选项-请参阅当前接受的一组选项的答案。
如果您正在使用CSH或TCSH,这里有一个解决方案:
( find . > files_and_folders ) >& /dev/null
如果你想输出到终端:
( find . > /dev/tty ) >& /dev/null
然而,正如“CSH -whynot”常见问题所描述的那样,您不应该使用CSH。
您还可以使用-perm和-prune谓词来避免下降到不可读的目录(参见如何从查找程序中删除“拒绝权限”打印输出语句?- Unix和Linux Stack Exchange):
find . -type d ! -perm -g+r,u+r,o+r -prune -o -print > files_and_folders
只需使用它在系统中搜索文件。
find / name YOUR_SEARCH_TERM 2>&1 | grep YOUR_SEARCH_TERM
我们不要做不必要的工程,你只是想搜索你的文件,对吧?然后,如果文件出现在您可访问的区域,该命令将为您列出文件。
这些错误被打印到标准错误输出(fd 2)。要过滤它们,只需将所有错误重定向到/dev/null:
find . 2>/dev/null > some_file
或者首先连接stderr和stdout,然后grep出那些特定的错误:
find . 2>&1 | grep -v 'Permission denied' > some_file