Linux:查找具有特定名称的所有文件夹,将其删除并将文件夹复制到这些文件夹的父目录中

时间:2015-01-19 04:36:37

标签: linux command-line

我试图看看我是否可以在Linux中使用一行命令执行以下操作:

我有一个名为FolderA的文件夹,位于我的PC中的3个不同位置。我必须在几台Linux机器上运行命令来替换FolderA(它们都可以隐藏在单独的父文件夹中,获取它们的位置并替换FolderB(我知道它在哪里,它是一个固定的路径,比如在我当前的目录中) ,这与FolderA的位置不同。)删除FolderA,并将FolderB复制到FolderA所在的位置。

我知道这是很多事情,我可以粗略地想出使用find命令获取位置,rm -rf删除文件夹(但我不知道如何利用结果在查找中)然后使用cp复制文件夹。但是我怎么能用一行呢?

谢谢!

1 个答案:

答案 0 :(得分:2)

在这里,我认为这应该做你想要的。

find / -name '*FolderA' -delete -print | xargs -l dirname | xargs -l cp FolderB

find命令将在整个文件系统中搜索以FolderA结尾的路径,删除它,然后打印文件夹的路径。 xargs -lfind输出中获取每一行,并以每行作为参数调用dirnamedirname采用路径并截断路径上的最终项目。最后一个命令使用xargs将前一个命令的每一行输出作为cp命令的目标。警告:尚未使用路径中的空格进行测试。