Linux: кошка с разделителями между файлами

28

В Linux, если вы введете cat *, вы получите что-то вроде этого:

line1 из file1
line2 из file1
LINE1 из file2
LINE1 из file3
line2 из file3
Line3 из file3

То, что я хотел бы, чтобы отобразить разделитель между файлами. Что - то вроде этого:
line1 из file1
line2 из file1
XXXXXXXXXXXX
LINE1 из file2
ХХХХХХХХХХХХ
line1 из file3
line2 из file3
Line3 из file3

Это легко сделать с помощью однострочника, который легко набирать наизусть?

Daniele
источник

Ответы:

40

Если вы не слишком суетливы по поводу внешнего вида разделителя:

tail -n +1 *
Жиль "ТАК - перестань быть злым"
источник
Это здорово! Я удивлен, как ваша команда отличается от tail -n 1 *. Я также не могу найти упоминания об эффекте +1 (больше, чем 1) на странице руководства.
Даниэль
1
tail -n Xпоказывает последние X строк. tail -n +Xначинается со строки X, начинающейся с 1 , то есть показывает все, кроме первых (X-1) строк.
Жиль "ТАК - перестань быть злым"
Ах, теперь я вижу это на странице руководства. Я упустил это. Отлично, спасибо большое
Daniele
Подобные решения в этой статье: everythingsysadmin.com/2012/09/unorthodoxunix.html
TomOnTime
Извините за плохой комментарий, но это потрясающе. Спасибо, @Gilles
Майк Д
17

cd /to/your/directory; for each in *; do cat $each; echo "XXXXXXXXXXX"; done

Янне Пиккарайнен
источник
побей меня этим :-)
Sirex
Тем не менее, решение, предоставленное Жилем, впечатляюще короткое!
Янне Пиккарайнен
Вау. работает чудо. Помог мне объединить папку JSON
Mayank Chandak
11
awk 'FNR==1 && NR!=1 {print "XXXXXXXXXXXX"}{print}' *

Или

awk 'FNR==1 {print "XXXXXX", FILENAME, "XXXXXX"}{print}' *

Или

awk 'FNR==1 {print "XXXXXX File no. " ++count, "XXXXXX"}{print}' *

Использование только Bash (нет cat):

for file in *; do printf "$(<"$file")\nXXXXXXXXXXXX\n"; done

Редактировать:

В AWK 4:

awk 'BEGINFILE {print "XXXXXXXXXXXX"}{print}' *

Вы можете использовать любой разделитель, такой как в других примерах в этом ответе. Если вы хотите разделитель в конце каждого файла, измените BEGINFILEна ENDFILE. Он по-прежнему может появляться в начале скрипта, поскольку он условный (а не подразумевает порядок выполнения).

Приостановлено до дальнейшего уведомления.
источник
2
+1 за awk! Клянусь, он может делать все, что угодно ...
Брэд