мой любимый является экс-энергией. Имеют много плагинов энергии, которое делает это очень простым в использовании с большой кодовой базой. Я до занимаю приблизительно 1 день для изучения его функций, но это будет стоить того.
$ zip -r dir1 dir1 -x dir1/dir3/*
работы для меня. Здесь -x
исключить опция. Вы могли также использовать включать опцию, но в этом случае, исключить опция включает меньше ввода.
На самом деле вопрос не абсолютно ясен. Вы хотите все каталоги и файлы под dir3
исключенный также, или просто файлы под dir3
? Команда выше только работает на последнего.
Один метод для работы с архивными файлами должен смонтировать их и затем получить доступ к ним как нормальные каталоги. FUSE доступен для большинства нельдов и поддерживает несколько файловых систем для доступа к сжатым файлам прозрачно. Для zip-файлов возможности включают zip предохранителя (AVFS также удобен, но только для чтения).
Например, с zip предохранителя, вот то, как смонтировать архив и скопировать файлы в него.
mkdir tmp
fuse-zip /path/to/zip tmp
rsync -av --exclude='/dir1/dir3/*' dir1 tmp/
fusermount -u tmp; rmdir tmp
mc
также имеет поддержку создания виртуальных файловых систем для архивов.
– Faheem Mitha
25.05.2011, 12:20
Попробуйте эту команду из родительского каталога dir1:
tar --exclude=dir3/* -cf - dir1/ | zip dir1.zip -
И разархивировать dir1.zip используют эту команду:
unzip -p dir1.zip | tar xf -