Если у вас есть 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
Вы можете решить проблемы с точечными файлами и файлами нескольких каталогов, настроив этот ответ, если это необходимо.