Исключить определенное расширение из ZIP-файла в Linux

Чтобы исключить определенное расширение из zip-файла в Linux, вы можете использовать различные подходы. Вот несколько методов с примерами кода:

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

find /path/to/directory -type f ! -name '*.extension' -exec zip archive.zip {} +

Эта команда находит все файлы в указанном каталоге (замените /path/to/directoryфактическим путем к каталогу), за исключением файлов с указанным расширением (замените extensionна желаемое расширение, например, txt, jpgи т. д.). Найденные файлы затем добавляются в файл archive.zip.

Метод 2: совместное использование команд zip и find

zip archive.zip $(find /path/to/directory -type f ! -name '*.extension')

Эта команда похожа на предыдущую, но объединяет команды zipи findс использованием подстановки команд. Команда findнаходит все файлы в указанном каталоге (замените /path/to/directoryфактическим путем к каталогу), исключая файлы с указанным расширением. Найденные файлы затем передаются в качестве аргументов команде zip, которая создает файл archive.zip.

Метод 3. Использование команды zip с циклом оболочки

for file in /path/to/directory/*; do
    if [[ "$file" != *.extension ]]; then
        zip archive.zip "$file"
    fi
done

В этом методе цикл оболочки перебирает каждый файл в указанном каталоге (замените /path/to/directoryфактическим путем к каталогу). Если файл не имеет указанного расширения, он добавляется в файл archive.zipс помощью команды zip.