Извлечение файла из каталога внутри файла tar без создания этого каталога

У меня есть tarfile, который имеет следующую структуру:

- dir1 -- file - dir2 - dir3 

Если я попытаюсь запустить tar -xf tarfile.tar.gz dir1/file , будет создан tar -xf tarfile.tar.gz dir1/file dir1, содержащий файл. Я хотел бы вместо этого просто получить файл без каталога между ними. Я мог бы переместить файл и удалить каталог, но мне было интересно, поддерживает ли команда tar только для этого.

Я использую Alpine Linux.

  • Как сравнить два архива tar (включая содержимое файла, новые / удаленные файлы, символические ссылки)?
  • Сжимать каталог с помощью tar / gz через SSH на локальный компьютер?
  • Содержимое Rsync tar с удаленным сервером
  • XZ - невозможно выделить память
  • Дисковый раздел опустошен во время резервного копирования tar
  • Есть ли параллельный файловый архиватор (например, tar)?
  • Могу ли я хранить и работать с каталогом в сжатой форме?
  • Поиск команды и tar в скрипте
  • 2 Solutions collect form web for “Извлечение файла из каталога внутри файла tar без создания этого каталога”

    POSIXly (кроме части gunzip которая не является командой POSIX):

     gunzip < file.tar.gz | pax -rs'|.*/||' dir1/file1 

    С помощью bsdtar :

     tar -s'|.*/||' -xf file.tar.gz dir1/file1 

    С GNU tar :

     tar --transform='s|.*/||' -xf file.tar.gz dir1/file1 

    С star :

     star -s '|*/||' -x -f file.tar.gz dir1/file1 

    Обратите внимание, что для некоторых из них, если файл является символической ссылкой, подстановка также влияет на цель символической ссылки.

    Вы можете извлечь в stdout (-O) и передать его в желаемое имя файла.

    Linux и Unix - лучшая ОС в мире.