как распаковать файл и переименовать папку в одной операции командной строки? - PullRequest
3 голосов
/ 18 сентября 2011

Я хочу скачать файл, распаковать его и переименовать папку.

Я могу скачать файл и распаковать его с помощью

curl https://s3.amazonaws.com/sampletest/sample.tar.gz | tar xz

Как мне переименовать папку той же командой?

curl https://s3.amazonaws.com/sampletest/sample.tar.gz | tar xz | mv ???????

Я не хочу явно использовать имя папки в команде.

Ответы [ 2 ]

4 голосов
/ 18 сентября 2011

Это возможно, но не тривиально. Проще создать собственный каталог, перейти в него, затем передать --strip-components 1 или --strip-path 1 в tar, если ваш tar (например, GNU Tar) поддерживает его.

 File name transformations:

      --strip-components=NUMBER   strip NUMBER leading components from file
                                  names on extraction
      --transform=EXPRESSION, --xform=EXPRESSION
                                  use sed replace EXPRESSION to transform file names
3 голосов
/ 18 сентября 2011

Если в вашей системе не установлен GNU tar, возможно, у него все еще есть pax (инструмент POSIX).Последний поддерживает параметр -s, который допускает произвольные изменения в имени пути обрабатываемых файлов.

Это тогда будет:

curl https://s3.amazonaws.com/sampletest/sample.tar.gz | gunzip | pax -r -s "/old/new/"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...