Слияние отдельных файлов из двух папок последовательно (никогда не задаваемый вопрос)

Мне нужно объединить содержимое двух папок последовательно в отдельные места назначения. Вот что у меня есть. 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 и т. Д.

Обе папки имеют одинаковое количество файлов. Выход может идти куда угодно. Для простоты давайте назовем его папкой Output и разместим в том же корне, что и папки 1 и 2.

В течение двух дней искали решение. Хлоп!

2
задан 18 September 2019 в 01:40

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"/*)

Это создаст файлы в текущем каталоге, имя которого является конкатенацией двух составляющих имен файлов. Это предполагает, что Вы хотите объединить файлы в порядке, в котором они сортируют в Вашей локали. Пустые разделители делают это безопасным для любых легальных имен файлов (который может быть излишеством для Вашего приложения).

1
ответ дан 23 October 2019 в 11:39

Другие вопросы по тегам:

Похожие вопросы: