Распаковать и переименовать конкретный каталог в zip - за одну операцию

Существует стандартная схема именования GNU для компиляторов и других частей инструментальной цепочки:

-

Целевой триплет имеет форму

--

И имя инструмента - gcc для компилятора или другое имя инструмента, например ld или strip или ar и т. Д. .

Компилятор по умолчанию, тот, который компилирует собственные двоичные файлы (не кросс-компилятор), просто называется gcc без триплета.

Тройка компилятора, которая находится внутри файла, о котором вы упомянули в своем вопросе, - это arm-none-linux-gnueabi (я знаю, что она выглядит как четверка, но это так). Чтобы использовать его, просто вызовите arm-none-linux-gnueabi-gcc вместо простого gcc .

Если вы создаете что-то, что использует Makefile , вы часто можете получить этот Makefile для использования нужного компилятора, запустив CC = arm-none-linux- gnueabi-gcc make вместо обычного make . Если вы создаете что-то, что использует сценарий GNU configure , вы также можете указать целевой триплет для этого .

1
07.02.2018, 06:03
1 ответ

Антон написал хороший скрипт для преобразования zip-файлов в tar-файлы. С парой модификаций вы можете использовать для преобразования zip в tar и отправки файла tar в конвейере на tar, а если у вас GNU tar, вы можете использовать флаг --transformдля переименования вещей.

Модификации :используют w|в качестве режима, чтобы мы могли писать в стандартный вывод, и использовать sys.stdoutв качестве файлового объекта для открытия tar-файла:

#! /usr/bin/env python

"""zip2tar """

import sys
import os
from zipfile import ZipFile
import tarfile
import time

def main(ifn):
    with ZipFile(ifn) as zipf:
        with tarfile.open(fileobj=sys.stdin, mode='w|') as tarf:
            for zip_info in zipf.infolist():
                #print zip_info.filename, zip_info.file_size
                tar_info = tarfile.TarInfo(name=zip_info.filename)
                tar_info.size = zip_info.file_size
                tar_info.mtime = time.mktime(list(zip_info.date_time) +
                                         [-1, -1, -1])
                # zip files don't have permissions, so
                # make everything executable for now
                tar_info.mode=0755
                tarf.addfile(
                    tarinfo=tar_info,
                    fileobj=zipf.open(zip_info.filename)
                )

main(sys.argv[1])

Сохраните это как, скажем, zip2tar.py, сделайте его исполняемым, и вы можете сделать:

zip2tar.py archive.zip | tar x -C ~ --transform 's/^myDir/myRenameDir/'

Или если ~/myRenameDirуже существует:

zip2tar.py archive.zip | tar x -C ~/myRenameDir --strip-components=1
1
27.01.2020, 23:14

Теги

Похожие вопросы