Crear directorio de destino al extraer tarball

25

¿Es posible crear un directorio de destino, similar a mkdir -pdonde puedo definir un directorio de destino inexistente dentro de mi comando tar, y tar creará el directorio para mí?

Sé que puedo redirigir la salida a un directorio usando tar -C /target/dir, pero esto no funciona si el directorio de destino no existe.

wulfgarpro
fuente
44
Si no es posible, siempre puede crear un alias de shell.
2011

Respuestas:

38
mkdir -p /target/dir && tar -C /target/dir
V para V
fuente
3
Sin alimentación con cuchara, directo y al grano.
Amado Martinez
10
Cambio sugerido menor:mkdir -p /target/dir && tar -C $_
Mark Melville
@MarkMelville nos describe lo que $ _ se supone que de aquí
Suhayb
@Suhayb $_es un parámetro especial en Bash que se expande hasta el último argumento del comando anterior.
ConceptRat
13
tar -xvf bash.html_node.tar.gz --one-top-level

Desde la página del comando man tar

--one-top-level[=DIR]

    Extraiga todos los archivos en DIR o, si se usa sin argumento, en un subdirectorio nombrado por el nombre base del archivo (menos los sufijos de compresión estándar reconocibles por --auto-compress).

----- prueba

prueba 1

tar zxvf ../aaa.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree aaa
aaa/
├── 111
└── 222

// si el nombre tgz es el mismo que root_dir del archivo, no hay otro efecto

prueba 2

mv ../aaa.tgz ../bbb.tgz

tar zxvf ../bbb.tgz --one-top-level
aaa/
aaa/222
aaa/111

tree bbb
bbb
└── aaa
    ├── 111
    └── 222

// si el nombre tgz no coincide con root_dir del archivo, cree un directorio de nivel superior

Alaa Ahmad M. Zakaria
fuente
3
Requiere GNU tar? El bsd tar predeterminado de Mac no tiene esta opción.
Curtis Yallop
1
Sí, esto debería mencionarse más claramente.
kcrisman
5

Esto tenía más sentido para mí: mkdir -p /create/folder && tar -zxf haroopad-v0.13.0_x64.tar.gz -C /create/testfolder

mkdircrea la carpeta, aunque no entiendo bien el -pcambio. &&le permite ejecutar un segundo comando. Usé interruptores de tar típicos, pero al final -Cse usa para cambiar directorios y extraerlos a esa ubicación necesaria.

referencia: extraer-archivos-contenidos-en-archivo-tar-gz-a-nuevo-directorio-nombrado-archivo

Gr4cchus
fuente
2
El modificador -p no arrojará un error si el directorio ya existe.
David
@David también creará cualquier directorio líder no existente, es decir, creará /createsi no existe.
Antonio Pérez
1

Si no conoce las rutas a crear ...
Obtenga las rutas necesarias del archivo tar, luego créelos ...

for P in \`tar tvf tarfile.tar |tr -s [:space:] |cut -d' ' -f6\`; do  
    C=\`echo "${P: -1}"\`  #get the last character  
    if [ $C = '/' ]; then  
        echo "Found directory: $P"  
        mkdir -p $P  
    fi  
done
ckroger
fuente