我想在包含/ 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条路径。
答案 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
。)