我有多个源文件夹(这些文件夹有很多文件,如 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/
请注意,这不会为 source2
但 source1
中的任何文件添加 .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/