我是 Unix 新手。我正在使用 find,但由于它列出了权限被拒绝的文件夹,所以我得到的结果太多,屏幕无法容纳。我尝试将其传输到 more,但似乎没有任何效果。因此,我有两个问题:
- 我如何过滤掉我无权访问的文件夹?
- 我如何对查找结果进行分页 - 我无法使其与更多结果一起工作。
谢谢
答案1
为了抑制权限被拒绝错误,请添加到语句2>/dev/null
末尾find
答案2
尝试(如果您使用 sh、bash):
find . -name "foo" 2>&1 | more
答案3
我不确定为什么将它通过管道传输到 more 对你不起作用。但一个简单的解决方案是将输出重定向到文件,然后对其进行分页。以下将重定向标准输出到一个文件,然后标准误差将保持默认,即在屏幕上显示错误:
find . -iname '*something*' > myfile.out
more myfile.out
不过,您必须等待查找完成才能看到所有内容。如果您想完全摆脱这些错误消息,并且仍然保留非错误结果,请转到该文件:
find . -iname '*something*' > myfile.out 2> /dev/null
每次运行此命令时,myfile.out 都会被覆盖。此重定向是 shell 的标准配置,可以与大多数命令一起使用。这是关于重定向的一个小教程,值得学习。
其他示例:
使用 时2>&1
,标准错误 (stderr) 被重定向到 stdout,因此两者最终都会通过管道传输到 more。使用 2> /dev/null 时,您会将它们发送到特殊设备,该设备基本上是一个黑洞(又名位桶)。使用 *nix,设备表示为文件。