Linux: 查找具有特定名称的所有文件夹,删除它们并将文件夹复制到这些文件夹的父目录中
Linux: Find all folders with a particular name, remove them and have a folder copied into the parent directory of those folders
我想看看我是否可以在 Linux 中使用一行命令执行以下操作:
我有一个名为 FolderA 的文件夹,它位于我 PC 的 3 个不同位置。我必须 运行 在几台 Linux 机器上执行命令来替换 FolderA(它们都可以隐藏在单独的父文件夹中,获取它们的位置并替换 FolderB(我知道它在哪里,它是一个固定路径,比如在我当前的目录中,与FolderA所在的目录不同。)删除FolderA,并将FolderB复制到FolderA所在的位置。
我知道这有很多事情要做,我可以大致弄清楚使用 find 命令获取位置,使用 rm -rf 删除文件夹(但我不知道如何利用结果在 find) 然后使用 cp 复制文件夹。但是我怎样才能在一行中完成它们?
谢谢!
在这里,我认为这应该可以满足您的要求。
find / -name '*FolderA' -delete -print | xargs -l dirname | xargs -l cp FolderB
find
命令将在整个文件系统中搜索以 FolderA 结尾的路径,将其删除,然后打印文件夹的路径。 xargs -l
从 find
输出中获取每一行,并以每一行作为参数调用 dirname
。 dirname
采用路径并截断路径上的最后一项。最后一个命令使用 xargs
将前一个命令的每一行输出作为 cp
命令的目标。警告:这还没有在路径中使用空格进行测试。
我想看看我是否可以在 Linux 中使用一行命令执行以下操作:
我有一个名为 FolderA 的文件夹,它位于我 PC 的 3 个不同位置。我必须 运行 在几台 Linux 机器上执行命令来替换 FolderA(它们都可以隐藏在单独的父文件夹中,获取它们的位置并替换 FolderB(我知道它在哪里,它是一个固定路径,比如在我当前的目录中,与FolderA所在的目录不同。)删除FolderA,并将FolderB复制到FolderA所在的位置。
我知道这有很多事情要做,我可以大致弄清楚使用 find 命令获取位置,使用 rm -rf 删除文件夹(但我不知道如何利用结果在 find) 然后使用 cp 复制文件夹。但是我怎样才能在一行中完成它们?
谢谢!
在这里,我认为这应该可以满足您的要求。
find / -name '*FolderA' -delete -print | xargs -l dirname | xargs -l cp FolderB
find
命令将在整个文件系统中搜索以 FolderA 结尾的路径,将其删除,然后打印文件夹的路径。 xargs -l
从 find
输出中获取每一行,并以每一行作为参数调用 dirname
。 dirname
采用路径并截断路径上的最后一项。最后一个命令使用 xargs
将前一个命令的每一行输出作为 cp
命令的目标。警告:这还没有在路径中使用空格进行测试。