linux Конвертировать tar.gz в .ZIP архив -- команда терминала (для всех файлов в папке, bash)
Primary tabs
Делаем так:
- Переходим в папку (лучше создать отдельную, чтобы ничего не удалилось) где лежит наш архив .tar.gz (или много таких архивов).
- Копипастим вот такую команду (копируем целиком и вставляем в терминал):
for f in *.tar.gz;\ do rm -rf ${f%.tar.gz} ;\ mkdir ${f%.tar.gz} ;\ tar -zxvf $f -C ${f%.tar.gz} ;\ zip -r ${f%.tar.gz}.zip ${f%.tar.gz} ;\ rm -rf ${f%.tar.gz} ;\ done
Как это работает
Как она работает (для каждого файла .tar.gz на уровне папки запуска -- bash скрипт, использующий цикл):
- на всякий случай удаляет папку (rm -rf ) с имененeм как у очередного архива .tar.gz, но без этого расширения (если такая папка вообще есть в этот момент -- например, если встретился файл test.tar.gz, то первым действием в цикле команда попытается удалить папку с имененм test -- это представляет опасность если у вас есть такая папка с чем-то ценным)
- Далее создаётся (mkdir) папка с тем же имененем, которое выше пытались удалить
- Затем распаковывем тар в эту папку
- Затем зипуем эту папку в файл с имененем как у тара, но расширением ZIP
- Затем удаляем временную папку, которую упоминали уже дважды
- Цикл (for) переходит к следующему файлу в папке (если таковой имеется)
Источник (пришлось его переработать): https://stackoverflow.com/questions/6301...
- Log in to post comments
- 5711 reads
vedro-compota
Wed, 09/13/2017 - 16:04
Permalink
отладка -- создание папок
просто создаст пустые директории для каждого файла:
_____________
матфак вгу и остальная классика =)