Я хочу исключить все .zip файлы во всех подкаталогах родительской папки, которую я архивирую, но я не работаю. У меня есть проверка man zip
страницы, это и это подвергают сомнению без успеха.
Я попробовал:
zip -q -r FILE.zip * -x \*.zip
zip -q -r FILE.zip * -x\*.zip
zip -q -r FILE.zip * -x */\.zip
zip -q -r FILE.zip * -x \*.zip
zip -q -r FILE.zip * -x \*.zip\*
zip -q -r FILE.zip * -x*.zip
и я все еще получаю все включенные zip-файлы (кроме того в родительской папке, сгенерированной с этой командой прежде).
Править: Проблема состояла в том, что у меня уже был FILE.zip в папке, которая включала некоторые zip-файлы. zip
управляйте, чтобы обновления вместо создали новый сжатый файл, если файл, который он пытается создать уже, существует, даже если Вы не указываете на-u опцию.
Необходимо заключить исключить шаблон в кавычки, когда Вы уже попытались сделать; первый должен на самом деле работать, даже если существует "более хорошее" решение.
Но давайте посмотрим на упрощенный пример для работы с; я Создал некоторые каталоги с файлами с .foo
и .bar
расширения:
Здесь я работаю find
для списка моего тестового каталога - это показывает все файлы и каталоги:
$ find
.
./1.bar
./1.foo
./sub1
./sub1/sub2
./sub1/sub2/1.bar
./sub1/sub2/1.foo
./sub1/1.foo
./sub1/1.bar
Теперь, мы можем просто видеть что работы
(мы избавляемся от выходного файла, не относящийся к соответствию).
Упаковка всех файлов:
$ zip -r /tmp/out.zip *
adding: 1.bar (stored 0%)
adding: 1.foo (stored 0%)
adding: sub1/ (stored 0%)
adding: sub1/sub2/ (stored 0%)
adding: sub1/sub2/1.bar (stored 0%)
adding: sub1/sub2/1.foo (stored 0%)
adding: sub1/1.foo (stored 0%)
adding: sub1/1.bar (stored 0%)
Упаковка, исключая .foo
файлы:
$ rm /tmp/out.zip
$ zip -r /tmp/out.zip * -x '*.foo'
adding: 1.bar (stored 0%)
adding: sub1/ (stored 0%)
adding: sub1/sub2/ (stored 0%)
adding: sub1/sub2/1.bar (stored 0%)
adding: sub1/1.bar (stored 0%)
Работы!
Попробовав еще раз с Вашим первым шаблоном:
$ rm /tmp/out.zip
$ zip -r /tmp/out.zip * -x \*.foo
adding: 1.bar (stored 0%)
adding: sub1/ (stored 0%)
adding: sub1/sub2/ (stored 0%)
adding: sub1/sub2/1.bar (stored 0%)
adding: sub1/1.bar (stored 0%)
Работы также!
Так... внимательно изучите то, что Вы действительно выполняли туда.
Сначала Вы могли удалить -q
опция для "тихого", скрывая стандартные сообщения, показанные в моих примерах.
Как следующий шаг, добавьте -v
опция для "подробного", для наблюдения большего количества деталей - возможно, слишком многие но возможно можно определить что-то интересное.
Из комментариев я вижу то удаление -q
уже помогший;
Базовая проблема состояла в том, что команда zip, используемая для тестирования, была изменена существованием выходного файла.
Технически, это изменило себя даже...
От man zip
:
Command format. The basic command format is
zip options archive inpath inpath ...
where archive is a new or existing zip archive and inpath is a directory or
file path optionally including wildcards. When given the name of an exist‐
ing zip archive, zip will replace identically named entries in the zip ar‐
chive (matching the relative names as stored in the archive) or add entries
for new names.