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.