Usando el comando "tar" en la Terminal para múltiples carpetas / archivos

1

Tengo muchos archivos como estos

SomeDirectory/RandomName.spa
SomeDirectory/AnotherRandomName.spa
SomeDirectory/YetAnotherRandomName.spa

...

Quiero descomprimir cada archivo .spa en SomeDirectory en cada una de sus carpetas separadas, con el mismo nombre. Yo usaría algo como - tar -xvf , pero ¿con qué atributos?

Luego quiero empaquetar cada carpeta en SomeDirectory de nuevo a RandomName.spa , (manteniendo el nombre de la carpeta). El comando sería tar -cvf , pero ¿con qué atributos?

    
pregunta user169895 11.02.2016 - 22:13

1 respuesta

0

Suponiendo que (1) los archivos .spa son en realidad archivos .tar , (2) usted está en SomeDirectory y (3) que los directorios con los nombres de los archivos que desea extraer no existen, el siguiente fragmento de código debe lograr lo que quieres:

for a in *.spa
  do a_dir='expr $a : '\(.*\).spa''
  mkdir $a_dir
  tar -xvf $a -C $a_dir;
done

O en caso de que prefiera una sola línea:

for a in *.spa; do a_dir='expr $a : '\(.*\).spa''; mkdir $a_dir; tar -xvf $a -C $a_dir; done

La primera línea en el bucle for elimina el .spa del nombre del archivo y lo asigna a una variable, que se usa en la segunda línea para hacer un directorio con ese nombre, y en la tercera línea en tar con el argumento -C .

El argumento -C en tar solo cambia el directorio durante la extracción y en realidad no hace uno, lo que hace que las cosas sean un poco más complicadas de lo que deberían ser.

Crédito: esta respuesta es una ligera modificación de enlace

    
respondido por el Gustavo Bezerra 12.02.2016 - 05:18

Lea otras preguntas en las etiquetas