Набор инструментов для рекурсивного объединения файлов: раскрытие магии «cat»

Привет! Сегодня мы собираемся погрузиться в увлекательный мир рекурсивного объединения файлов с помощью старой проверенной команды «cat». Если вы не знакомы с этим термином, «cat» — сокращение от слова «объединить» и представляет собой утилиту командной строки, которая позволяет вам читать, объединять и отображать содержимое файлов. Итак, давайте засучим рукава и рассмотрим различные методы достижения этой магии рекурсивной конкатенации файлов!

Метод 1: использование команды find с xargs

find /path/to/directory -type f -name "*.txt" -print0 | xargs -0 cat >> output.txt

В этом методе мы используем мощную команду findдля поиска всех файлов в заданном каталоге (замените /path/to/directoryфактическим путем), которые соответствуют определенному шаблону ( например, *.txt). Параметр -print0гарантирует, что имена файлов завершаются нулем, а xargs -0считывает имена файлов с нулем в конце и передает их в качестве аргументов в catкоманда. >>перенаправляет вывод в файл с именем output.txt.

Метод 2: использование сценария оболочки

#!/bin/bash
shopt -s globstar
for file in /path/to/directory//*.txt; do
    cat "$file" >> output.txt
done

Этот метод использует простой сценарий оболочки, который перебирает все файлы с расширением .txtв указанном каталоге (замените /path/to/directoryфактическим путем). Команда catдобавляет содержимое каждого файла в output.txt.

Метод 3: объединение с командой тройник

find /path/to/directory -type f -name "*.txt" -exec cat {} \; | tee output.txt

Здесь мы используем команду findдля поиска нужных файлов, а опция -execвыполняет команду catдля каждого найденного файла. Команда teeотображает объединенный вывод на экране и добавляет его к output.txt.

Метод 4. Использование опции globstar

#!/bin/bash
shopt -s globstar
cat /path/to/directory//*.txt > output.txt

В этом методе мы включаем опцию globstar, которая позволяет рекурсивное подстановку (сопоставление файлов в подкаталогах) с использованием вывода ` wildcard. Thecatcommand then concatenates all the matching files and redirects the output to..txt`.

Метод 5: использование команды find с подоболочкой

find /path/to/directory -type f -name "*.txt" -exec sh -c 'cat "$@"' _ {} + > output.txt

Здесь мы используем команду findс опцией -exec, выполняя подоболочку, которая запускает команду catдля всех найденных файлов. +в конце команды гарантирует, что несколько файлов будут переданы в качестве аргументов подоболочке.

Это всего лишь несколько способов выполнить рекурсивное объединение файлов с помощью команды «cat». Вы можете выбрать тот, который соответствует вашим потребностям и предпочтениям. Теперь вперед и раскройте возможности «кошки» для легкого объединения файлов!