我试图看看我是否可以在Linux中使用一行命令执行以下操作:
我有一个名为FolderA的文件夹,位于我的PC中的3个不同位置。我必须在几台Linux机器上运行命令来替换FolderA(它们都可以隐藏在单独的父文件夹中,获取它们的位置并替换FolderB(我知道它在哪里,它是一个固定的路径,比如在我当前的目录中) ,这与FolderA的位置不同。)删除FolderA,并将FolderB复制到FolderA所在的位置。
我知道这是很多事情,我可以粗略地想出使用find命令获取位置,rm -rf删除文件夹(但我不知道如何利用结果在查找中)然后使用cp复制文件夹。但是我怎么能用一行呢?
谢谢!
答案 0 :(得分:2)
在这里,我认为这应该做你想要的。
find / -name '*FolderA' -delete -print | xargs -l dirname | xargs -l cp FolderB
find
命令将在整个文件系统中搜索以FolderA结尾的路径,删除它,然后打印文件夹的路径。 xargs -l
从find
输出中获取每一行,并以每行作为参数调用dirname
。 dirname
采用路径并截断路径上的最终项目。最后一个命令使用xargs
将前一个命令的每一行输出作为cp
命令的目标。警告:尚未使用路径中的空格进行测试。