linux - 合并两个文件夹并保持文件同名

标签 linux shell ubuntu command-line

我有多个源文件夹(这些文件夹有很多文件,如 ip 地址 Ex: 192.168.2.1 ),我想将它们合并到一个目标文件夹中。

在 Linux 上使用终端执行此操作的方法是什么。

来源 1

/Desktop/source1/192.168.2.1
/Desktop/source1/192.168.2.2
/Desktop/source1/192.168.2.3

来源 2

/Desktop/source2/192.168.2.1
/Desktop/source2/192.168.2.2
/Desktop/source2/192.168.2.3

来源 3

/Desktop/source2/192.168.2.1

来源 4

来源 5

来源 6

.

.

.

目标

/Desktop/target/192.168.2.1
/Desktop/target/192.168.2.2
/Desktop/target/192.168.2.3
/Desktop/target/192.168.2.1.copy
/Desktop/target/192.168.2.2.copy
/Desktop/target/192.168.2.3.copy
/Desktop/target/192.168.2.1.copy.copy

原始文件没有文件扩展名,我只是按原样命名它们,但我在 gedit 或任何文本编辑器中打开它们。复制的文件后缀可能是('192.168.2.3.copy 或 192.168.2.3_2 或任何只需要不同的东西)

在 Linux 中使用 cp 命令、shell 脚本或任何其他命令执行此操作的方法是什么?

最佳答案

cp source1/* target/
cp -f --backup --suffix='.copy' source2/* target/

请注意,这不会为 source2source1 中的任何文件添加 .copy 后缀。也就是说,.copy 只会为重复的文件名添加。

对于多个源文件夹,你可以这样做:

cp source1/* target/
for i in {2..n} ; do
    cp -f --backup=numbered source${i}/* target/
done

n 替换为您的文件夹编号。这将为第一个副本放置一个 .~1~,为第二个副本放置一个 .~2~,依此类推。

关于linux - 合并两个文件夹并保持文件同名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43790856/

相关文章:

linux - 使用 bash 查找两个文件之间的差异

python - python 脚本 : Linux vs Solaris 上的 Setuid 位

python - #!/bin/sh vs #!/usr/local/bin/python 在可执行文件中

ruby-on-rails - Bundler 不会安装 libxml-ruby (2.3.3) Ubuntu

linux - 通过 Bash 重命名和转换文件名

windows - 让 Linux shell 脚本将字符串填充到 Windows 用户的复制/粘贴缓冲区中

json - 使用 jq 就地修改 json 中的键值

shell - shell代码中参数的用法是什么?

linux - 从 Ubuntu 20 构建适用于 Ubuntu 18 的应用程序

linux - 如何使用 Packer 创建带有 Linux 自定义分区的 Azure VM