В Linux, если вы наберете cat *, вы получите что-то вроде этого:
строка1 из файла1
строка2 из файла1
строка1 из файла2
строка1 из файла3
строка2 из файла3
строка3 из файла3
Я бы хотел, чтобы между файлами отображался разделитель. Что-то вроде этого:
строка1 из файла1
строка2 из файла1
XXXXXXXXXXXX
строка1 из файла2
XXXXXXXXXXXX
строка1 из файла3
строка2 из файла3
строка3 из файла3
Возможно ли это с однострочным текстом, который легко набирать наизусть?
Если вы не слишком привередничать с внешним видом разделителя:
tail -n +1 *
cd /to/your/directory; for each in *; do cat $each; echo "XXXXXXXXXXX"; done
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
. Он все еще может появляться в начале скрипта, так как это условный (а не подразумевающий порядок выполнения).