以下面的目录树为例,将内容移动directory/folderA
到 的最佳方法是什么directory
。
如果目标中存在同名文件,如何覆盖文件,例如:directory/folderA/2017/06/info.log
和directory/2017/06/info.log
。
directory
|-- folderA
| |-- 2017
| | |-- 06
| |
| |-- 2016
| | |-- 12
| | |-- 11
| | |-- 10
|
|-- 2017
| |-- 04
| |-- 05
| |-- 06
|
|-- 2016
| |
答案1
就像是rsync -a --remove-source-files src/ dest
?一个简单的测试表明,任何存在于dest
但不存在的内容src
都将被保留。 (注意 后面的斜杠src
。这里是必需的。)
进一步保存,您可以添加--ignore-existing
这样的文件,dest
即使它们也存在于src
.但随后您可能会留下文件,src
因为--remove-source-files
仅适用于成功传输到目的地的文件。
一般来说,rsync
是一个非常强大的工具,有很多选项。 (而且,按比例来说,有一点学习曲线......尽管这里的情况看起来非常简单。)如果有人在rsync
.
答案2
tar -cv /parent_folder/subfolder/* -f - I tar -xv --overwrite /parent_folder/
使用 tar 打包整个目录并通过管道传输到父文件夹中的 unar 可能是最好的选择(如果要通过 bzip 过滤 tar 文件,请在管道之前和之后添加 -j )
—overwrite :用从 tar 文件中提取的文件覆盖现有文件