Mam plik ZIP, w którym znajduje się główny katalog, w którym przechowywane są wszystkie pliki:
Release/
Release/file
Release/subdirectory/file
Release/subdirectory/file2
Release/subdirectory/file3
Chcę wyodrębnić wszystko poniżej Release
, zachowując strukturę katalogów, ale po uruchomieniu tego:
unzip archive.zip Release/* -d /tmp
Tworzy górny Release
folder:
/tmp/Release/
/tmp/Release/file
/tmp/Release/subdirectory/file
/tmp/Release/subdirectory/file2
/tmp/Release/subdirectory/file3
Jak mogę wyodrębnić wszystko wewnątrz Release
bez tworzenia Release
folderu, takie jak to:
/tmp/
/tmp/file
/tmp/subdirectory/file
/tmp/subdirectory/file2
/tmp/subdirectory/file3
unzip archive.zip && mv Release/* .
Release
folderOdpowiedzi:
W twoim przypadku spróbuj w folderze docelowym:
Następnie musisz usunąć utworzony link:
źródło
j
Flaga powinna uniemożliwiać tworzenie folderówunzip -j archive.zip -d .
Od strony man :
źródło
-j
opcja zrzuca wszystkie pliki w bieżącym katalogu, bez względu na strukturę katalogów w archiwum.Skrypt Pythona do spłaszczania wyodrębnionego drzewa
Skrypt napisany poniżej wyodrębnia plik zip i przenosi z niego pliki znajdujące się w najwyższym katalogu do bieżącego katalogu roboczego. Ten szybki skrypt jest dostosowany do tego konkretnego pytania, w którym znajduje się jeden najwyższy katalog, który zawiera wszystkie pliki, choć za pomocą kilku edycji można go dostosować do bardziej ogólnych przypadków.
Testowe uruchomienie
Oto przykład działania skryptu. Wszystko wyodrębniono do bieżącego katalogu roboczego, ale plik źródłowy może znajdować się w innym katalogu. Test jest przeprowadzany w archiwum zip mojego osobistego repozytorium github.
Testuj, gdy plik źródłowy znajduje się w innej lokalizacji
źródło