Я пытаюсь загрузить пакет tar.gz с помощью wget , распаковать его и переименовать распакованный каталог в одну (piped) команду.

Мои попытки были:

wget -O- $URL | tar fvxz - -C $DEST

wget -O- $URL | tar fvxz - | mv - $DEST

Что мне не удается?

1 ответ1

0

Если у вас есть BSD или GNU tar, вы можете сделать это:

mkdir -p "$DEST" && wget -O- "$URL" | tar --strip-components 1 -xvzf- -C "$DEST"

Поскольку в GNU tar есть --strip-components , это не стандартное решение. В любом случае, вы не можете сделать это с одним конвейером, так как у вас уже должен быть каталог, и есть совершенно хорошие способы сделать это, если вы все равно хотите отказаться от всего одного конвейера.

mkdir -p "$DEST" &&
cd "$DEST" &&
wget -O- "$URL" | tar -xvzf-
cd * && # Assumes the result only has one directory
mv * .. # Assumes no dotfiles

Вы можете решить проблемы с точечными файлами и файлами нескольких каталогов, настроив этот ответ, если это необходимо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .