当我使用
cp -R inputFolder outputFolder
结果取决于上下文:
- 如果
outputFolder
不存在,将创建它,并且克隆的文件夹路径为outputFolder
。 - 如果
outputFolder
存在,则创建的克隆将为outputFolder/inputFolder
这太可怕了,因为我想创建一些安装脚本,并且如果用户错误地运行了两次安装脚本,那么他将outputFolder
是第一次创建该脚本,然后在第二次运行时,将在中再次创建所有内容outputFolder/inputFolder
。
- 我总是想要第一个行为:在原始对象旁边(作为同级对象)创建一个副本。
- 我想使用
cp
便携式(例如MINGW尚未rsync
发货) - 我查了一下
cp -R --parents
,但这个重新创建的路径一路目录树(因此克隆也不会outputFolder
,但是some/path/outputFolder
) --remove-destination
或者--update
如果2不做任何更改,仍然将内容复制到outputFolder/inputFolder
有没有一种方法,而无需先检查是否存在outputFolder
(如果文件夹不存在,则...)或使用rm -rf outputFolder
?
达成共识的可移植UNIX方式是什么?
rsync
?
cp
,则在两个tar
命令之间进行管道传递是复制树的一种很好的可靠方法。
rsync
发货的MINGW中工作。
tar -C input -cf - . | tar -C output -xf -
。-C
更改工作目录,但这不是标准选项,因此,如果不支持它,则需要在正确的工作目录中运行两个( cd input && tar -cf - . ) | ( cd output && tar -xf - )
tars ,例如,但是,如果您使用的是Windows,我将使用roaima的回答。
mv
将文件集合移动到单个常规文件中?