untar filename.tr.gz к каталогу “имя файла”

Я хотел бы к untar архив, например, "tar123.tar.gz" к каталогу/myunzip/tar123 /" использование команды оболочки.

tar-xf tar123.tar.gz распакует файлы, но в том же каталоге как, где я работаю в.

Если бы имя файла было бы "tar233.tar.gz", я хочу, чтобы это было распаковано к/myunzip/tar233.tar.gz", таким образом, целевой каталог был бы основан на имени файла.

Кто-либо знает, может ли команда tar сделать это?

32
задан Jorre 1 June 2010 в 14:16
поделиться

4 ответа

С Bash и GNU tar:

file=tar123.tar.gz
dir=/myunzip/${file%.tar.gz}
mkdir -p $dir
tar -C $dir -xzf $file
33
ответ дан 27 November 2019 в 20:18
поделиться
tar -xzvf filename.tar.gz -C destination_directory
34
ответ дан 27 November 2019 в 20:18
поделиться

Вы можете изменить каталог перед извлечением с помощью флага -C, но каталог должен уже существовать. (Если вы создаете каталоги для конкретных файлов, я настоятельно не рекомендую называть их foo.tar.gz - расширение подразумевает, что это архивный файл, но на самом деле это каталог. Это приведет к путанице.)

.
4
ответ дан 27 November 2019 в 20:18
поделиться

Попробуйте

file=tar123.tar.gz
dir=/myunzip/$(basename $file .tar.gz)   # matter of taste and custom here
[ -d "$dir" ] && { echo "$dir already exists" >&2; exit 1; }
mkdir "$dir" && ( gzip -d "$file | ( cd "$dir" && tar xf - ) )

Если вы используете GNU tar, вы также можете указать ему опцию -C "$ dir" , которая заставит его перейти в каталог перед распаковкой. Но приведенный выше код должен работать даже с дегтем бронзового века.

Заявление об ограничении ответственности: ни один из приведенных выше кодов не был протестирован.

2
ответ дан 27 November 2019 в 20:18
поделиться
Другие вопросы по тегам:

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