Команда unzip для Linux: Можливість примусити перезаписати?


173

Я пишу сценарій оболонки, який розпаковує ZIP-файл у існуючу ієрархію файлів, потенційно перезаписуючи деякі файли.

Проблема полягає в тому, що команда unzip просить підтвердити:
replace jsp/extension/add-aspect.jsp? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

Чи є можливість змусити розпаковувати, щоб перезаписати файли?

Відповіді:


266

Відповідно до http://www.manpagez.com/man/1/unzip/, ви можете використовувати -oопцію для перезапису файлів:

unzip -o /path/to/archive.zip

Зауважте, що -o, як і більшість unzipпараметрів, має йти перед назвою архіву.


1
наприклад:, unzip -o ZIP_PATHпрацює як модифікатор.
bonzofenix

10
-oваріант повинен використовуватися перед будь-якими іншими аргументами. Приклад:unzip -o /path/to/archive.zip -d /destination_dir
FelikZ

1
@FelikZ Дякую за деталі, я додав у відповідь ваш (знятий) приклад
foraidt

це не працює на веб-сайтах Azure (Windows).
loretoparisi

@loretoparisi Про що ти говориш? Це питання Linux. Ви шукаєте щось на кшталт Expand-Archive ?
Франклін Ю

31

Якщо вам потрібно розпакувати, щоб замінити лише нові файли, ви можете використовувати

unzip -f archieve.zip

Але для подальших посилань можна просто ввести

unzip 

і ви отримаєте список аргументів цього пакету. Можливі аргументи для цього випадку:

-f  freshen existing files, create none
-n  never overwrite existing files         
-q  quiet mode (-qq => quieter)
-o  overwrite files WITHOUT prompting    

Використовуйте той, який вам здається більш підходящим для ваших потреб.


6
+1, мені подобається більш тонка, дружелюбна версія "ось як rtfm для контексту, але ось відповідний розділ підходу m".
Натан Басанес

1
Також подивився на допомогу, але не зрозумів різницю. між -u update files, create if necessaryі -f freshen existing files, create none🤷‍♂️?
juanmirocks

// Різниця полягає в поведінці, якщо файлу не існує
Натан Басанес

@juanmirocks З -f новіші файли взагалі не будуть вилучені, навіть якщо вони не є адресатом (наприклад, якщо створена пізніша версія zip, у якій є файли, які попередній розпакування не створював). Якщо ви ще не знаєте, що хочете цього, швидше за все, ви цього не зробите. Навпаки, -u буде витягувати додаткові файли не в пункті призначення, гарантуючи, що нічого не відсутнє в пункті призначення, який знаходиться в zip.
poikilos
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.