rozpakuj, jak przycinać najlepsze katalogi

14

Mam archiwum zip. unzip -l myarchive.zipKomenda daje ten wpis:

top/subtop/files/1.txt
top/subtop/files2/2.txt
etc

Foldery główne to top / subtop dla wszystkich plików. Jak wyodrębnić te pliki bez dwóch folderów top / subtop?

Np. Kiedy jestem w katalogu / home / myuser / public_html files/1.txti files2/2.txtpowinienem zostać rozpakowany bezpośrednio do tego katalogu.

Próbowałem, unzip myarchive.zip top/subtop/*ale i tak utworzyłem katalogi top / subtop.

kamera
źródło

Odpowiedzi:

9

Niestety nie możesz. Jedyną realną opcją jest przeniesienie ich po ich wyodrębnieniu.

Sepero
źródło
Hmm, dobrze wiedzieć. Zapytałem o to, ponieważ kilka dni temu, podczas tworzenia archiwum, mimowolnie dodawałem ścieżki z góry. Wystąpił problem z rozpakowaniem ich z powodu dodatkowych górnych ścieżek. Jednak nie mogę tego dzisiaj powtórzyć - dziś działa dobrze, tzn. Gdy znajduje się w katalogu top / subtop i robi pliki zip -r.zip *, nie dodaje ścieżki top / subtop jako prefiksu do ścieżki plików. Wydaje mi się, że wykonuję dokładnie to samo polecenie, ale, co dziwne, wyniki są różne, więc nie jest konieczne usuwanie najlepszych katalogów podczas rozpakowywania.
kamera
Zauważ, że można zignorować wszystkie katalogi (po prostu umieszczając wszystkie pliki obok siebie) przy pomocy unzip -j.
Skylar Ittner
4

Możesz wypróbować tarpolecenie, które ma --strip-componentsfunkcję i może działać na plikach zip.

Eamon
źródło
2
Nie działa z tar (GNU tar) 1.15.1:tar: This does not look like a tar archive tar: Error exit delayed from previous errors
Kevin Panko
2
Tar FreeBSD może obsługiwać archiwa ZIP. Inne implementacje tar nie są niestety w pełni funkcjonalne.
Michaił T.
1
Dla użytkowników Debiana, tar FreeBSD jest dostępny jako bsdtar (apt-get install bsdtar), jeśli chcesz używać tar do rozpakowywania plików zip.
Niklas B,
-2
$ unzip -l myarchive.zip
$ mv top/subtop/* .

#kissPrinciple;)

Romain DEQUIDT
źródło