Jak „cofnąć” polecenie rozpakowania?


19

Użyłem „rozpakuj XXX.zip”, aby wyodrębnić plik zip, niestety popełniam błąd.

Teraz chcę usunąć wszystkie pliki i katalogi wygenerowane przez „rozpakuj”.
Jak mogę to cofnąć?

Odpowiedzi:


29

Użyj tego:

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -v {}

Użyj tego, jeśli jesteś sceptyczny (poprosi o potwierdzenie)

unzip -l filename |  awk 'BEGIN { OFS="" ; ORS="" } ; { for ( i=4; i<NF; i++ ) print $i " "; print $NF "\n" }' | xargs -I{} rm -iv {} 

Nie powiedzie się, jeśli wszystkie pliki mają spacje w nazwie ... (+1 teraz z -iedycji :).
sarnold

Problem tkwi w awk '{print $4}'- może być w nazwie pliku ze spacjami $4 $5 $6 .... :)
sarnold

1
Dobrze. Naprawiono to również.
Abhijeet Rastogi

5
FTR usuwa również oryginalny plik zip
sjr

Moja droga:unzip -l foo.zip | awk 'NR>3{print $NF}' | egrep -v '\--|files'|xargs rm -r
zhuguowei

5

Jesteś w trudnym miejscu; standardowe zipinfo(1)narzędzie nie zapewnia żadnego mechanizmu pozwalającego uzyskać jednoznaczne nazwy plików z archiwum. Ale możesz zbliżyć się:

zipinfo -1 /path/to/zip/file.zip | xargs -d '\n' rm -i

Jeśli masz pewność, że żaden z plików nie ma w nim nowych linii, możesz usunąć -iopcję rm(1)(co na pewno stanie się nudne).


4
unzip -Z -1 <filename.zip> | xargs -I{} rm -v {}

Wykonuje zadanie, ponieważ -Zwywołuje zipinfonarzędzie i -1opcję, która wypisuje tylko nazwy plików

Możesz znaleźć więcej szczegółowych informacji na ten temat man unzipi man 1 zipinfopoleceń


1

Jeśli chcesz wyczyścić katalog po przypadkowym rozpakowaniu bez uprzedniego utworzenia folderu, możesz utworzyć folder, rozpakować do niego, a następnie:

rm -r ` ls folder `

„” jest bardzo przydatne do łączenia łańcuchów poleceń, ale jest bardzo dosłowne.

Komentarze poprawiły tę odpowiedź, jeśli chcesz mieć pewność, że usuwasz również ukryte pliki (co prawdopodobnie robisz), zrób to

rm -r ` ls -A folder `

przepraszam za spieszenie się do niewłaściwej składni, czy głosowanie może zostać usunięte?
chrispepper1989

1
Jeśli zip odmówi zastąpienia jakichkolwiek plików, oryginały zostaną usunięte. Jeśli jakieś ukryte pliki zostały rozpakowane, nie zostaną usunięte (chyba że używasz ls -a).
gmarmstrong

1
A raczej, ls -Aaby uniknąć błędów podczas wpisywania .i..
gmarmstrong 25.04.19

0

Aby to zrobić w Nautilusie (bez wiersza poleceń), możesz po prostu przejść do miejsca, w którym przypadkowo rozpakowałeś pliki, posortować pliki, klikając kartę „Zmodyfikowane”, a następnie wybrać i usunąć wszystkie pliki oznaczone dokładną godziną uruchomił polecenie rozpakowania.


1
Przeczytaj uważnie pytanie ponownie. Twoja odpowiedź nie odpowiada na pierwotne pytanie. Niestety Linux nie zawiera Eksploratora Windows.
DavidPostill

Ach tak! Do tej pory nie przyszło mi do głowy, że rozpakowanie nie było do tej pory poleceniem terminalu systemu Windows. Dzięki! Sprawdzę, czy Nautilus ma podobną funkcjonalność, i wyedytuję odpowiedź. W przeciwnym razie po prostu go usunę.
cameronroytaylor

-1
unzip -Z -1 /path/to/zip/file.zip | xargs -I{} rm -rf {}

2
Chociaż może to odpowiedzieć na pytanie, lepszym rozwiązaniem byłoby wyjaśnienie, dlaczego tak się dzieje.
DavidPostill
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.