Объединить все файлы из дерева каталогов

У меня есть каталог с именем /home/foobar/, который содержит множество текстовых файлов в многочисленных подкаталогах. Мне нужно создать файл, который имеет объединенное содержимое всех файлов внутри этой структуры каталогов.

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

2 ответа

Решение

Это простая задача для find а также cat:

 find <path_to_files> -type f -print0 | xargs -0 -I {} cat {} >> merged

Содержание всех файлов в <path_to_files> и во всех подпапках будут добавленыmerged, Поэтому удалите merged для каждого нового запуска команды.

Это должно работать (замена path/to/dir с путем к базовому каталогу):

for i in $(find /path/to/dir -type "f" ); do cat "$i">>OUTPUT.txt;done
Другие вопросы по тегам