这仅仅是一个好奇的问题。 我已经试过多个变种,并没有研究,但似乎无法弄清楚,如果这是可能的。
我想在find命令中执行一个find命令,类似如下:
find /some/dir -type d -exec find -type f -delete {} \;
因此,如果我们拿上面的例子中,这个第一find命令找到特定文件夹的目录,而第二个find命令删除每个这些文件夹中的文件。
所以,简单地说,是有可能在bash到find命令中执行find命令? 此外,这为什么会是一个坏主意,如果有一个。 难道这不是被用作一种递归查找文件?
原则上,你可以通过一个find
命令用于执行命令-exec
,就像你可以在任何其他的命令。 它很少会是一个好主意,但这是另一个讨论。
然而,有一个语法问题,如果双方的find
命令需要-exec
。 两者的find
命令需要一个标记,以结束该命令,要么;
或+
。 这将无法正常工作,即使你尝试混合结束标志。 第一查找命令将解释所述第一结束标记作为其端部标记,然后它会反对所述第二结束标记。 由于第二find
不执行命令,也没什么关系,它的结束标记丢失。
在你的命令,你有{}
在错误的地方:
find /some/dir -type d -exec find {} -type f -delete \;
这将工作(应该工作,我没有测试它 - 我喜欢我的文件!)。 它会更有意义,如果你有这样的条件-mtime +365
在目录级搜索; 如果目录没有被修改过了一年,删除在它的文件。
但是,只要有只有一个-exec
,你应该能够运行find
从find
。