Polecenie unzip Linux: Opcja wymuszenia zastąpienia?


173

Piszę skrypt powłoki, który rozpakowuje plik ZIP do istniejącej hierarchii plików, potencjalnie nadpisując niektóre pliki.

Problem polega na tym, że polecenie unzip prosi o potwierdzenie:
replace jsp/extension/add-aspect.jsp? [y]es, [n]o, [A]ll, [N]one, [r]ename: y

Czy istnieje opcja wymuszenia rozpakowania w celu zastąpienia plików?

Odpowiedzi:


266

Zgodnie z http://www.manpagez.com/man/1/unzip/ możesz użyć -oopcji zastępowania plików:

unzip -o /path/to/archive.zip

Zauważ, że -opodobnie jak większość unzipopcji, musi poprzedzać nazwę archiwum.


1
np .: unzip -o ZIP_PATHdziała jako modyfikator.
bonzofenix

10
-oOpcja powinna być używana przed innymi argumentami. Przykład:unzip -o /path/to/archive.zip -d /destination_dir
FelikZ

1
@FelikZ Dziękuję za szczegóły, dodałem twój (uproszczony) przykład do odpowiedzi
foraidt

nie działa to w witrynach internetowych platformy Azure (Windows).
loretoparisi,

@loretoparisi O czym ty mówisz? To jest pytanie o Linuksa. Szukasz czegoś takiego jak Expand-Archive ?
Franklin Yu

31

Jeśli musisz rozpakować, aby zastąpić tylko nowe pliki, możesz użyć

unzip -f archieve.zip

Ale w przypadku przyszłych referencji możesz po prostu pisać

unzip 

a otrzymasz listę argumentów dla tego pakietu. Możliwe argumenty w tym przypadku to:

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

Wybierz ten, który wydaje Ci się bardziej odpowiedni dla Twoich potrzeb.


6
+1, podoba mi się bardziej subtelna, bardziej przyjazna wersja „oto jak rtfm dla kontekstu, ale tutaj jest odpowiednia sekcja podejścia m”.
Nathan Basanese

1
Spojrzałem również na pomoc, ale nie zrozumiałem różnicy. pomiędzy -u update files, create if necessarya -f freshen existing files, create none🤷‍♂️?
juanmirocks

// Różnica polega na zachowaniu, jeśli plik nie istnieje
Nathan Basanese

@juanmirocks Przy opcji -f nowsze pliki nie zostaną w ogóle wyodrębnione, nawet jeśli nie znajdują się w miejscu docelowym (na przykład, jeśli tworzona jest późniejsza wersja pliku zip, która zawiera pliki, których nie utworzył poprzedni rozpakowanie). Jeśli jeszcze nie wiesz, że tego chcesz, prawdopodobnie nie. Wręcz przeciwnie, -u wyodrębni dodatkowe pliki poza miejscem docelowym, upewniając się, że niczego nie brakuje w miejscu docelowym, które znajduje się w zipie.
poikilos
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.