Эффективные способы копирования только содержимого каталогов в Linux

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

Метод 1: использование команды cp с подстановочными знаками
Самый простой способ скопировать только содержимое каталога — использовать команду cpс подстановочным знаком *. Вот пример:

$ cp -r /path/to/source/* /path/to/destination/

Эта команда рекурсивно копирует все файлы и каталоги из исходного каталога в целевой каталог.

Метод 2: использование команды rsync
Команда rsync— универсальный инструмент для синхронизации и копирования файлов. Чтобы скопировать только содержимое каталога, исключая сам каталог, вы можете использовать опцию --exclude. Вот пример:

$ rsync -av --exclude='*' /path/to/source/ /path/to/destination/

Эта команда копирует содержимое исходного каталога в целевой каталог, исключая все файлы и каталоги.

Метод 3: использование команды find и cp
Другой подход — использовать команду findв сочетании с командой cp. Этот метод позволяет отфильтровывать каталоги и копировать только файлы. Вот пример:

$ find /path/to/source/ -type f -exec cp {} /path/to/destination/ \;

Эта команда находит все файлы (-type f) в исходном каталоге и выполняет команду cpдля копирования каждого файла в целевой каталог.

Метод 4: использование сценария оболочки
Вы также можете создать сценарий оболочки для автоматизации процесса копирования только содержимого каталога. Вот пример скрипта:

#!/bin/bash
source_dir="/path/to/source/"
destination_dir="/path/to/destination/"
for file in "$source_dir"/*; do
    if [ -f "$file" ]; then
        cp "$file" "$destination_dir"
    fi
done

Сохраните скрипт в файл (например, copy_contents.sh), сделайте его исполняемым (chmod +x copy_contents.sh) и запустите (./copy_contents.sh). Этот сценарий перебирает каждый файл в исходном каталоге и копирует только файлы (исключая каталоги) в целевой каталог.

Копировать только содержимое каталогов в Linux можно разными способами. Независимо от того, предпочитаете ли вы инструменты командной строки, такие как cpи rsync, или выбираете собственный сценарий оболочки, эти подходы обеспечивают эффективные способы выполнения задачи. Используя эти методы, вы можете удобно копировать содержимое каталогов, не включая сам каталог.