是否有可能find命令传递到另一个find命令的-exec?(Is it possible to p

2019-10-28 10:59发布

这仅仅是一个好奇的问题。 我已经试过多个变种,并没有研究,但似乎无法弄清楚,如果这是可能的。

我想在find命令中执行一个find命令,类似如下:

find /some/dir -type d -exec find -type f -delete {} \;

因此,如果我们拿上面的例子中,这个第一find命令找到特定文件夹的目录,而第二个find命令删除每个这些文件夹中的文件。

所以,简单地说,是有可能在bash到find命令中执行find命令? 此外,这为什么会是一个坏主意,如果有一个。 难道这不是被用作一种递归查找文件?

Answer 1:

原则上,你可以通过一个find命令用于执行命令-exec ,就像你可以在任何其他的命令。 它很少会是一个好主意,但这是另一个讨论。

然而,有一个语法问题,如果双方的find命令需要-exec 。 两者的find命令需要一个标记,以结束该命令,要么;+ 。 这将无法正常工作,即使你尝试混合结束标志。 第一查找命令将解释所述第一结束标记作为其端部标记,然后它会反对所述第二结束标记。 由于第二find不执行命令,也没什么关系,它的结束标记丢失。

在你的命令,你有{}在错误的地方:

find /some/dir -type d -exec find {} -type f -delete \;

这将工作(应该工作,我没有测试它 - 我喜欢我的文件!)。 它会更有意义,如果你有这样的条件-mtime +365在目录级搜索; 如果目录没有被修改过了一年,删除在它的文件。

但是,只要有只有一个-exec ,你应该能够运行findfind



文章来源: Is it possible to pass a find command to -exec of another find command?
标签: bash find