jak określić rozpakowany katalog docelowy


21

Czy w poleceniu linux zip istnieje opcja umożliwiająca kodowanie katalogu docelowego, do którego rozpakowuje. Na przykład chciałbym skompresować pliki ./mydir do pliku myzipfile.zip, ale chcę, aby polecenie unzip utworzyło określony katalog „projx” i rozszerzyło do niego pliki z rozszerzeniem ./mydir.

zip -r myzipfile.zip mydir (-option to expand into 'projx' when unzipped? )

Odpowiedzi:


18

Nie ma takiej opcji, przynajmniej nie dla Info-ZIP. Musisz sam stworzyć katalog projx , przenieść / skopiować do niego pliki, a następnie przekazać go zip.

Jeśli katalog już istnieje, po prostu przekazać opcję -d, aby unzipokreślić katalog docelowy dla ekstrakcji.


4

Aby to zrobić, istnieje inny sposób. Możesz spłaszczić całą zawartość pliku zip, stosując następującą metodę. Katalog docelowy to „ projx ” i wykonaj następujące polecenie.

cd /projx && unzip -j /path/to/myzipfile.zip

Opcja -j nazywa się „niepotrzebnymi ścieżkami” i po prostu zrzuca każdy plik do bieżącego katalogu zamiast wyodrębniania jakiejkolwiek struktury katalogów.


0

Nie wiem o konkretnej opcji wiersza poleceń, ale możesz użyć następujących poleceń, aby osiągnąć swój cel:

ln -s mydir projx
zip -r myzipfile.zip projx
rm projx

Pierwsze polecenie tworzy dowiązanie symboliczne, dzięki czemu można uzyskać dostęp do plików mydirrównież za pośrednictwem projx. Następnie przy użyciu Info-ZIP(testowane w wersji 2.31) dowiązanie symboliczne jest usuwane (jest to ustawienie domyślne, chyba że określono inaczej -y), a pliki są zapisywane rekurencyjnie:

adding: projx/ (stored 0%)
adding: projx/foo.1 (deflated 23%)
adding: projx/bar.2 (deflated 73%)
...

Widzisz, nazwa folderu jest również przechowywana w pliku - więc po rozpakowaniu katalog projxjest tworzony.

Nie mogę jednak wymyślić możliwości przechowywania ścieżek bezwzględnych, ale i tak jest to zły pomysł.


Ścieżka bezwzględna działa tylko w systemie MacOS, podając opcję -jj. W innych systemach operacyjnych -jobsługiwana jest tylko opcja (i -jjjest interpretowana jako -j), która usuwa wszelką wiodącą ścieżkę, a tym samym prowadzi do przeciwnej (bardzo sprytna konstrukcja ...).
scai
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.