У меня есть ZIP-файл, в котором есть верхний каталог, где хранятся все файлы:
Release/
Release/file
Release/subdirectory/file
Release/subdirectory/file2
Release/subdirectory/file3
Я хочу извлечь все под Release
, сохраняя структуру каталогов, но когда я запускаю это:
unzip archive.zip Release/* -d /tmp
Создает верхнюю Release
папку:
/tmp/Release/
/tmp/Release/file
/tmp/Release/subdirectory/file
/tmp/Release/subdirectory/file2
/tmp/Release/subdirectory/file3
Как я могу извлечь все внутри Release
без создания Release
папки, например так:
/tmp/
/tmp/file
/tmp/subdirectory/file
/tmp/subdirectory/file2
/tmp/subdirectory/file3
command-line
unzip
Моисей
источник
источник
unzip archive.zip && mv Release/* .
Release
папкуОтветы:
В вашем случае попробуйте в целевой папке:
Чем вам нужно удалить созданную вами ссылку:
источник
j
Флаг должен предотвратить создание папкиunzip -j archive.zip -d .
Со страницы руководства :
источник
-j
опция сбрасывает все файлы в текущем каталоге без учета структуры каталогов в архиве.Скрипт Python для выравнивания извлеченного дерева
Сценарий, написанный ниже, извлекает zip-файл и перемещает файлы, содержащиеся в верхнем каталоге, из него в текущий рабочий каталог. Этот быстрый сценарий адаптирован для решения этого конкретного вопроса, когда существует один единственный верхний каталог, содержащий все файлы, хотя с некоторыми изменениями можно сделать подходящим для более общих случаев.
Тестовый забег
Вот пример того, как скрипт должен работать. Все извлечено в текущий рабочий каталог, но исходный файл может быть в другом каталоге. Тест проводится на zip-архиве моего личного репозитория github.
Тест с исходным файлом в другом месте
источник