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.

Odpowiedzi:


9

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


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.


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,


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.