Tar распаковывает папку, как изменить ее имя?

Я - crerating сценарий, который загружает монго c драйвер:

wget -O mongo.tar.gz https://... \
    && tar -xzvf mongo.tar.gz \
    && cd mongo \
    && ...

Однако это перестало работать в cd mongo часть, потому что фактическое имя папки, когда я распаковываю tar, mongo-c-driver-1.7.0. Я не могу полагаться на это имя. Как изменить его, не зная, как имя собирается посмотреть lile?

1
задан 8 September 2017 в 05:10

1 ответ

Можно применить команду sed для преобразования имени. От man tar

 --transform, --xform EXPRESSION
       use sed replace EXPRESSION to transform file names

Так:

wget -O - https://... |
    tar -xzv --transform 's:^[^/]*:mongo:'

s:^[^/]*:mongo: замены все до первого / с mongo. Можно передать файл по каналу непосредственно к tar (следовательно я использовал -O - в wget, и отброшенный -f опция в tar).

С другой стороны, можно сократить первый компонент и извлечение в каталоге по Вашему выбору:

mkdir -p mongo && wget -O - https://... |
    tar -xzv --strip-components=1 -C mongo

Где:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction
 -C, --directory DIR
       change to directory DIR
3
ответ дан 7 December 2019 в 12:32

Другие вопросы по тегам:

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