2016-11-23 2 views
1

Это простая проблема, я просто застрял на ней. Я беру содержимое нескольких файлов и печатаю имя каждого файла в виде заголовка перед его содержимым. Это много работает. Но я хочу иметь пустую строку, разделяющую содержимое одного файла и заголовок для содержимого следующего файла.Вставьте пустую строку после содержимого файла в новый файл

Я хочу, чтобы выглядеть следующим образом:

Файл 1 заголовка

Файл 1 Содержание

[пустое пространство]

Файл 2 заголовка

Файл 2 Содержание

Я попытался положить \ n после "{}" в моем коде, но это не сработало. Какие-либо предложения?

find . -type f -name '*_top_hits.txt' -print -exec cat {} \; > combinedresults.txt 

ответ

3

Вы можете просто пустой echo как часть find-exec как

find . -type f -name "*_top_hits.txt" -print -exec sh -c "cat {};echo" \; > combinedresults.txt 

echo просто производит один новую пустую строку после каждого содержимого файла. Также вам не нужно использовать несколько опций -exec, а использовать одну под-оболочку.

+0

Спасибо! Вы можете объяснить sh-c? – lynkyra

+0

@lynkyra: он вызывает оболочку явно для запуска этих команд, она обязательно не должна быть 'sh', также может быть' bash -c'. – Inian

0

Вы можете попробовать добавить второй -exec:

find . -type f -name '*_top_hits.txt' -print -exec cat {} \; -exec echo \; > combinedresults.txt 

Одним из побочных эффектов этого является то, что новая строка будет добавлена ​​в конце после того, как содержимое последнего файла.

Смежные вопросы