Найти в Дзене

Как объединить содержимое файлов в Linux: простые способы

Оглавление
Как объединить содержимое файлов в Linux: простые способы
Как объединить содержимое файлов в Linux: простые способы

В Linux объединение содержимого нескольких файлов в один — частая задача, с которой сталкиваются как системные администраторы, так и разработчики. Это может пригодиться для анализа логов, работы с конфигурационными файлами, объединения текстов и пр. В этой статье рассмотрим основные способы объединения файлов в терминале Linux.

Каждый день на канале выходят полезные и интересные материалы по теме Линукс. Чтобы не пропустить их - подпишитесь на канал, а также присоединитесь к одному из трёх удобных для вас способов получения уведомлений о выходе новых заметок: через Телеграмм, в социальной сети ВКонтакте или в сообществе канала в Одноклассниках.

Дзен-ридер
VK | VK
Linux для чайников: гайды, статьи и обзоры | Группа на OK.ru | Вступай, читай, общайся в Одноклассниках!

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 и циклы оболочки. Используйте подходящий метод в зависимости от ваших целей.