Intereting Posts
ssh_exchange_identification: read: Сброс соединения с помощью одноранговой сети Удаление файлов определенного диапазона размеров Как пропустить проверку DNS, пока я отключен от Интернета Возможно ли совместное использование NFS через многожильный компьютер? Как я могу объединить нераспределенный раздел с расширенным разделом? Есть ли способ найти файл в обратном рекурсивном поиске? renice не работает в macOS Sierra Как установить Arch с использованием более старого ядра? Похоже, что нет ISO Установите переменную среды (TZ) для всех сценариев запуска и inittab Возможна ли последовательность обратной связи данных устройства? Переменная Shell variable vs. Environment, какая из них предпочтительна, если оба имеют одно и то же имя? Скрипт для временного удаления прав администратора Путь к x86_64 заголовкам ядра Linux Второй монитор не работает с драйверами nvidia Поднял мой подсказку, что случилось?

Zip-содержимое некоторых подпапок, но не других

Я хотел бы использовать команду zip unix для zip каталога. Скажем, каталог структурирован следующим образом:

dir1/ dir1/dir2/ dir1/dir2/file1 dir1/dir2/file2 dir1/dir3 dir1/dir3/file1 dir1/file1 dir1/file2 

Я хотел бы zip dir1 в dir1.zip , так что dir1.zip содержит dir1/file1, dir1/file2, dir1/dir2/file1, dir1/dir2/file2, dir3/ , но NOT dir1/dir3/file1 . Короче говоря, я хотел бы закрепить все файлы под dir1 , dir2 и всеми его файлами и dir3 но NONE из его файлов.

Если я сделаю zip dir1 dir1/ , он закроет все в dir1 , все его файлы и подпапки, но не содержимое подпапок. Если я сделаю zip -r dir1 dir1/ , он закроет все в dir1 , включая все его файлы и все файлы его подпапок. Я хотел бы иметь возможность контролировать, какие подпапки должны быть закодированы рекурсивно, а какие нет.

Благодарю.

 $ zip -r dir1 dir1 -x dir1/dir3/* 

работает на меня. Здесь -x – опция исключения. Вы также можете использовать опцию include, но в этом случае опция exclude включает в себя меньшее количество ввода.

На самом деле вопрос не совсем ясен. Вы хотите, чтобы все каталоги и файлы в dir3 исключены, или просто файлы под dir3 ? Приведенная выше команда работает только для последней.

Один из способов работы с архивными файлами – монтировать их, а затем обращаться к ним, как к обычным каталогам. FUSE доступен для большинства организаций и поддерживает несколько файловых систем для прозрачного доступа к сжатым файлам . Для zip-файлов возможны варианты плавких вставок ( AVFS также удобен, но доступен только для чтения).

Например, с помощью плавкого предохранителя, вот как смонтировать архив и скопировать файлы в него.

 mkdir tmp fuse-zip /path/to/zip tmp rsync -av --exclude='/dir1/dir3/*' dir1 tmp/ fusermount -u tmp; rmdir tmp 

Попробуйте эту команду из родительского каталога dir1:

 tar --exclude=dir3/* -cf - dir1/ | zip dir1.zip - 

И для распаковки dir1.zip используйте эту команду:

 unzip -p dir1.zip | tar xf -