没有权限的目录的bash find命令被拒绝错误

时间:2018-02-08 12:19:44

标签: bash shell find sh

我想在包含/ current / jre / bin /的文件夹中找到名为java的所有文件,并且没有许多权限被拒绝的错误。

所以我认为find / -type d '*/current/jre/bin/*' 2>/dev/null应该完成这项工作。 但回报什么都没有。我也试过没有*,带-wholename(有和没有*),附加-name,-name但没有-type d和其他一些命令。

如果我用find / -name 'java' 2>/dev/null搜索java文件,我会收到11条路径,我只需要3条路径。

2 个答案:

答案 0 :(得分:0)

'*/current/jre/bin/*'混淆之后放置-type d会发现它无法确定您要搜索的路径。如果您删除了2>/dev/null,则会看到错误find: paths must precede expression

相反,使用管道grep:

find / -name 'java' 2>/dev/null | grep '/current/jre/bin/'

答案 1 :(得分:0)

说“路径必须包含此内容”的正确方法是使用-path

find / -type d -path '*/current/jre/bin/*' 2>/dev/null

在谓词中指定一个空字符串是一个错误,如果您没有将错误消息重定向到/dev/null,则很容易找到该错误。即便如此,即使您正在扫描整个文件树,让命令立即返回 应该是一个绝对的赠品。

专业提示:还要在选项中添加-xdev,以避免让find进入/dev等等。如果您将文件拆分为多个分区,则需要在谓词之前指定要在路径列表中搜索的每个分区。

(一般语法为find path1 path2 path3 ... -list -of -predicates。)