2 votos

El uso de "alquitrán" comando en la Terminal para varias carpetas/archivos

Tengo muchos archivos como estos

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

...

Quiero explicarles cada .spa archivo SomeDirectory a cada uno de sus carpetas independientes, con el mismo nombre. Me gustaría usar algo como - tar -xvf, pero ¿con qué atributos?

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

0voto

Gustavo Bezerra Puntos 206

Suponiendo que (1) el .spa archivos son en realidad .tar archivos, (2) en SomeDirectory, y (3) que los directorios con los nombres de los archivos que desea extraer no existen, el siguiente trozo 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 un one-liner:

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 la for bucle tiras de la .spa desde el nombre de archivo y la asigna a una variable, que se utiliza en la segunda línea para hacer un directorio con ese nombre, y en la tercera línea en tar con la -C argumento.

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

Crédito: Esta respuesta es una ligera modificación de http://superuser.com/a/748567/226246

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X