Чтобы исключить определенное расширение из 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.