我需要将两个文件夹的内容按顺序合并到单独的目标中。这是我的。A、B、C、D、E、F 是单独的文件。
Folder 1:
A
B
C
...
Folder 2:
D
E
F
...
在输出时我需要按顺序合并文件。因此它们应该像这样合并:
Output:
AD
BE
CF
...
换句话说,文件夹 1 中的第一个文件与文件夹 2 中的第一个文件。文件夹 1 中的第二个文件与文件夹 2 中的第二个文件。在我们的例子中,AD 由文件 A 和 D 的内容组成,BE 由文件 B 和 E 组成,等等。
两个文件夹的文件数量相同。输出可以放在任何地方。为了简单起见,我们将其称为输出文件夹,并将其放置在与文件夹 1 和 2 相同的根目录中。
我已经找了两天解决方案了。哎呀!
答案1
假设“合并”的意思是连接文件的内容,你可以执行以下操作:
#!/bin/bash
while IFS= read -r -d '' -u3 file1 && IFS= read -r -d '' -u4 file2; do
cat "$file1" "$file2" > "${file1##*/}${file2##*/}"
done 3< <(printf '%s\0' "Folder 1"/*) 4< <(printf '%s\0' "Folder 2"/*)
这将在当前目录中创建文件,其名称是两个组成文件名的串联。它假定您想要按照文件在您的语言环境中的排序顺序合并文件。空分隔符使它对于任何合法文件名都是安全的(这对您的应用程序来说可能有点过头了)。