У меня есть каталог / home / foobar /, который содержит множество текстовых файлов в многочисленных подкаталогах. Мне нужно создать файл, который имеет объединенное содержимое всех файлов внутри этой структуры каталогов.
Порядок, в котором файлы объединяются, не имеет значения. Я могу сначала скопировать все файлы в один каталог, а затем объединить, но в этом случае решение должно учитывать, что файлы не имеют уникальных имен.
Это - простая задача для 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