В Linux объединение содержимого нескольких файлов в один — частая задача, с которой сталкиваются как системные администраторы, так и разработчики. Это может пригодиться для анализа логов, работы с конфигурационными файлами, объединения текстов и пр. В этой статье рассмотрим основные способы объединения файлов в терминале Linux.
Каждый день на канале выходят полезные и интересные материалы по теме Линукс. Чтобы не пропустить их - подпишитесь на канал, а также присоединитесь к одному из трёх удобных для вас способов получения уведомлений о выходе новых заметок: через Телеграмм, в социальной сети ВКонтакте или в сообществе канала в Одноклассниках.
1️⃣ Использование команды cat
Самый простой и распространённый способ объединить несколько файлов — воспользоваться утилитой cat.
cat file1.txt file2.txt > combined.txt
Этот пример объединяет содержимое file1.txt и file2.txt и сохраняет его в новый файл combined.txt. Если файл combined.txt уже существует, он будет перезаписан. Чтобы добавить в конец (не перезаписывая), используйте >>:
cat file1.txt file2.txt >> existing_output.txt
2️⃣ Использование cat с подстановкой (glob)
Если нужно объединить все файлы определённого типа (например, все .log):
cat *.log > all-logs.txt
Или только определённые:
cat log1.log log3.log log5.log > some-logs.txt
3️⃣ Добавление разделителей между файлами
Иногда полезно визуально отделять содержимое каждого файла. Можно использовать echo для добавления заголовков:
(for f in file1.txt file2.txt; do
echo "==== $f ===="
cat "$f"
echo
done) > combined.txt
4️⃣ Объединение с помощью awk
Если нужно более гибко управлять содержимым:
awk 'FNR==1{print "==== " FILENAME " ===="} {print}' file1.txt file2.txt > output.txt
Здесь FNR==1 означает "первая строка каждого файла", FILENAME — имя текущего файла.
5️⃣ Пример с логами и временной меткой
Часто при объединении логов полезно добавлять временную метку или имя файла:
for f in *.log; do
echo "--- $f ---"
cat "$f"
echo
done > all-logs.txt
🏁 Вместо заключения...
Команда cat — это мощный инструмент, который легко справляется с задачей объединения файлов. Если нужно больше гибкости — в помощь awk, sed и циклы оболочки. Используйте подходящий метод в зависимости от ваших целей.