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ąć?

hero2008
źródło

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 {} 
Abhijeet Rastogi
źródło
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).

Sarnold
źródło
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ń

Prathu Baronia
źródło
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 `
chrispepper1989
źródło
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.

cameronroytaylor
źródło
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 {}
Igor Shcheglakov
źródło
2
Chociaż może to odpowiedzieć na pytanie, lepszym rozwiązaniem byłoby wyjaśnienie, dlaczego tak się dzieje.
DavidPostill