rozpakuj wiele plików

14

Nie sądzę, że tylko ja mam ten problem, ale niestety nie byłem w stanie znaleźć właściwej odpowiedzi między wcześniej zadanymi pytaniami.

Jest to bardzo powszechna procedura w witrynach torrentowych, w których zawartość jest podzielona na wiele małych archiwów. Czasami te małe indeksowane archiwa zip zawierają inne archiwa rar.

Moje pytanie brzmi: jak sobie poradzić z tym problemem? Jak rekursywnie rozpakowywać te pliki?

rda
źródło
2
Czy możesz podać przykład?
ztik
Szukasz rozwiązania ręcznego lub całkowicie zautomatyzowanego?
David Foerster,
tylko uwaga, zwykle gdy znajdziesz takie torrenty o nielegalnym oprogramowaniu / filmach, i nigdy nie dojdziesz do końca tych plików .rar / .zip, ponieważ są fałszywe.
Jeggy

Odpowiedzi:

20

Aby to zrobić, naciśnij Ctrl+ Alt+ Tna klawiaturze, aby otworzyć Terminal. Kiedy się otworzy, uruchom poniższe polecenia:

unzip '*.zip'

Możesz także kliknąć prawym przyciskiem myszy pierwszy plik w grupie i wybrać opcję Wyodrębnij tutaj, a to spowoduje również usunięcie wszystkich plików w tej grupie.

Mitch
źródło
Zgodnie z instrukcją unzip nie obsługuje dzielonych archiwów (patrz pierwszy akapit w sekcji „Błędy”).
David Foerster,
@DavidFoerster właśnie go przetestował i działa.
Mitch
Ok, to instrukcja wydaje się nieprawidłowa. Dobry chwyt
David Foerster,
@mitch w moim przypadku nie działa to mówi "błąd podczas ładowania pliku zip", ale w systemie Windows ten sam katalog na tym samym dysku rozpakowuje się za pomocą winrar, może próbowałeś rozpakować wiele, ale> osobny <plik zip jednocześnie? to inna sprawa.
papajo
2

Aby rozpakować wiele plików za pomocą pętli -

for z in *.zip; do unzip "$z"; done
Rohith Madhavan
źródło
@DavidFoerster Dwie metody są zasadniczo takie same. *.zipzapewnia wszystkie możliwe pliki kończące się rozszerzeniem zip, które pętla rozpakowuje jeden po drugim. Dlatego też @Mitch w odpowiedzi umieścił pojedyncze cudzysłowy '*.zip', aby powłoka nie rozpoznała znaku wieloznacznego.
Rohith Madhavan
1
Jest to w rzeczywistości lepsza metoda, ponieważ można określić listę nazw plików zamiast mówić „wszystkie pliki w katalogu”. IE chcesz wyodrębnić określoną listę plików zip jeden po drugim w kolejności, możesz zrobić: „dla z w XYZTG; rozpakuj -o„ $ z.zip ”; gotowe” i zrobi to w tej kolejności. To jest lepsza odpowiedź imho.
John Hamilton
0

CTRL+ ALT+, Taby otworzyć terminal

for f in $(ls | egrep zip); do
  unzip $f -vd UnzippedDirectory
done

Zasadniczo pętla przechodzi przez wszystkie zamki, które masz w bieżącym katalogu, i rozpakowuje każdy z nich -vw trybie pełnym (stąd flaga) do katalogu ( -dflaga)

Daniel Andrei Mincă
źródło