cp命令在不同的Ubuntu版本上进行了额外的复制以克隆文件夹

侯赛因·图格鲁·布基基西克

编辑:找到一个重复的解决方案:rsync -a --delete https://stackoverflow.com/questions/23698183/how-to-force-cp-to-overwrite-directory-instead-of-creating-another-one-里面

有效的新脚本:

#!/bin/bash

numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
   (rsync -a --delete $cmdline/ $cmdline$i/; ) &
   (echo "preparing folder clone: $i") &
done
wait

对于多线程文件夹复制,

#!/bin/bash

numCopy=$1
shift
cmdline="${@}"
echo "prepare folders"
for ((i=1;i<=$numCopy;i++));
do
   (cp -rf $cmdline $cmdline$i; ) &
   (echo "preparing folder clone: $i") &
done
wait

该脚本将源文件夹复制$cmdline到(不存在的)目标文件夹中$cmdline$i而在Ubuntu 16.04的电脑上没有问题,但是当我在使用Ubuntu 18.04的云计算机上运行相同的脚本时,它将执行以下操作:

  • 复制源作为目的地(我只需要这个)
  • 也将源复制到目的地(destination/source我不想要这个)

这不会破坏任何程序,但是我不想消耗不必要的云空间。

为什么某些不同版本的Ubuntu将辅助副本添加到目标文件夹中?

我正在使用此脚本作为

./myscript.sh 2 foldertest

这会将foldertest复制为foldertest1和foldertest2。如果第一个参数是32,则它将进行32个拷贝,直到foldertest32。

cp的文档说-r是递归复制,这是我需要对源文件夹进行完整的深度克隆,就像在Windows或Ubuntu的图形终端中进行复制粘贴(就地在其中产生folder2 folder3 ...的地方)一样。另外,我添加-f强制它不询问就复制文件,因为我要组成64个克隆,并且如果已经有64个克隆,则不想回答64个问题。

有关我需要的行为的一些额外信息:

文件夹A:a.txt b.txt c.txt

文件夹A1,A2,A3,A4 ..为:

a.txt
b.txt
c.txt

但是它是:

a.txt
b.txt
c.txt
A

通常,当我将文件复制到文件时,它会覆盖(如果存在)。我需要在文件夹上执行相同的覆盖行为,而不是复制到其中。

博多

的结果cp -rf source dest不同(如果dest已经存在)。

  • 如果dest不存在,它将创建一个source名为的副本dest假设source包含一个文件f1,它将创建dest/f1
  • 如果dest以目录形式存在,并且dest不包含名为的文件source,则它将source其所有内容复制 dest通过上面的示例,您将获得dest/source/f1
  • 如果dest以文件形式存在,如果source是目录,则复制将失败。
  • 如果dest以目录形式存在并且dest包含名为的文件source,则复制将失败。
  • 如果dest以文件形式存在,并且如果source是文件,则dest其内容将被覆盖source

如果要删除任何现有的目标目录,则可以更改(cp -rf $cmdline $cmdline$i; ) &(rm -rf $cmdline$i && cp -rf $cmdline $cmdline$i; ) &

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用批处理文件对 desktop.ini 进行了更改,但文件夹图标不会更改

尽管进行了配置,为什么 NuGet 仍使用 %APPDATA%\Roaming\packages 作为存储库文件夹?

是否在“所有程序”列表中进行了其他安装的Inno安装程序子文件夹?

是否对克隆语句进行了优化?

不同的sql在两台服务器上进行了解释。“复制到tmp表”非常慢

JPA实体在Ubuntu上进行了更新,但在Windows上引发了乐观锁定异常

在Mac上进行复制时,如何合并(而不是替换)文件夹?

Linux cp命令将文件夹复制到当前目录

使用python,终端命令(ubuntu)和文件夹属性的不同大小的文件夹

使用终端命令(ubuntu)和文件夹属性的不同大小的文件夹

boto3版本,如果对文件进行了更改,则附加

为什么cp无法复制指定的文件夹

如何使用cp以幂等方式递归复制文件夹?

C ++中的文件范围变量在gcc和clang中进行了不同的优化

在Ubuntu 14.04中复制文件夹

Bash评估在版本4.4中进行了更改?

在新版本的Angle中进行了动画处理

Ansible:将命令标准输出与不同位置的现有文件夹进行比较

Robocopy 命令不复制文件和文件夹

仅复制包含文件的文件夹的命令

复制不同名称文件夹中的文件

从工作簿复制范围(无文件夹路径版本)

在UNIX中删除/ proc文件夹的复制版本

无法cp文件夹

如何复制文件夹中的文件以进行构建?

iOS 7和iOS 8在-(void)viewDidAppear:(BOOL)上的不同行为在部分Curl VC上进行了动画处理

Ubuntu是否针对多核CPU进行了优化?

Ubuntu是否已针对KRACK攻击进行了修补?

在Dropbox公用文件夹内的文件夹上进行协作?