xargs 多次查找

xargs 多次查找

我有一个问题;1) 我正在使用 find 命令查找目录;2) 我需要在之前找到的目录中执行另一个 find 命令。我想要类似这样的内容find . -type d -not -name bad | xargs find {0} * 是否有可能以某种方式告诉 xargs 将上一个命令输出 {0} 的结果放在哪里。

我找到了一个使用 -exec 而不是 xargs 命令的解决方案: find . -type d -not -name bad -exec find {} -name '*' \;

但我个人更喜欢 xargs,可以用 xargs 做那件事吗?

答案1

如果我正确理解了你的要求,你最好做类似的事情:

find . -type d | grep -i <bad> | xargs -i find {} -type f

管道通过grep更多的是个人偏好 - 您可以继续使用参数来find排除您不感兴趣的目录。这里的关键是-i切换到xargs并使用{}而不是{0}

答案2

find+xargs而不使用-print0可能会很危险。原因如下:http://en.wikipedia.org/wiki/Xargs#The_separator_problem

您可能希望使用 GNU Parallel:

find . -type d | grep -i <bad> | parallel find {} -type f

了解更多:http://www.youtube.com/watch?v=OpaiGYxkSuQ

相关内容