Объединить все файлы из дерева каталогов
У меня есть каталог с именем /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