Linux查找命令权限被拒绝

3

我希望你能帮我过滤掉不必要的信息 "Permission denied"。 这些是命令 "find -type f -name sources.list" 的输出结果。

find: './run/lxcfs': Permission denied
find: './run/sudo': Permission denied
find: './run/lvm': Permission denied
find: './tmp/systemd-private-99eef94819d84080adc7df3e60efee5b-systemd-timesyncd.service-HE48k9': Permission denied
find: './lost+found': Permission denied
find: './dev/vboxusb': Permission denied
find: './root': Permission denied
./etc/apt/sources.list
find: './etc/sudoers.d': Permission denied

我尝试将"! -readable -prune"与find命令一起使用,以抑制上述的“Permission denied”信息,但仍然无效。

1
可能是如何从“find”中排除所有“权限被拒绝”的消息?的重复问题。 - Jonathan Leffler
4个回答

6
请尝试以下操作:
find -type f -name sources.list 2>/dev/null

这将重定向stderr输出流,该流用于报告所有错误,包括“访问被拒绝”错误,到空设备。

1
非常感谢,不需要重定向流,是否可以绕过那些我没有读取权限的文件夹? - jianrui
不确定,但据我所知,没有! - Vtik

5

类似以下的代码应该能够奏效

find -type d ! -readable -prune -o -type f -name sources.list

1
以下对我有用:

find / -mount -readable -name "<whatever>" -print

在这里,我只想搜索根文件系统,而不进入任何已挂载的文件系统。因此使用-mount。

引起错误的问题文件是不可读的(导致“权限被拒绝”)。因此使用-readable。

其余部分很明显。

(注意:在Ubuntu 16.04中,/var/lib/lxcfs中的文件即使对于root用户也不可读。上述方法解决了我的问题。)


-1
首先,您可以借助以下方法检查文件夹的访问控制列表(ACL)。
getfacl -R /foldername

如果对特定文件夹有读取权限,则运行;
find foldername -type f -name sources.list

否则 跳过命令


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接