当我使用
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将文件集合移动到单个常规文件中?