Utilizzo del comando "tar" in Terminale per più cartelle / file

1

Ho molti file come questi

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

...

Voglio decomprimere ogni file .spa in SomeDirectory nelle rispettive cartelle separate, con lo stesso nome. Vorrei usare qualcosa come - tar -xvf , ma con quali attributi?

In seguito voglio impacchettare di nuovo tutte le cartelle in SomeDirectory su RandomName.spa , (mantenendo il nome della cartella). Il comando sarebbe tar -cvf , ma con quali attributi?

    
posta user169895 11.02.2016 - 22:13
fonte

1 risposta

0

Supponendo che (1) i file .spa siano effettivamente .tar archivi, (2) tu sia in SomeDirectory , e (3) che le directory con i nomi degli archivi che vuoi estrarre non esistano, la seguente parte di codice dovrebbe ottenere ciò che desideri:

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

O nel caso in cui preferisci un one-liner:

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

La prima riga nel ciclo for rimuove il .spa dal nome dell'archivio e lo assegna a una variabile, che viene utilizzata nella seconda riga per creare una directory con quel nome e nella terza riga in tar con l'argomento -C .

L'argomento -C in tar cambia solo directory durante l'estrazione e in realtà rende uno, rendendo le cose un po 'più complicate di quanto dovrebbero essere.

Credito: questa risposta è una leggera modifica del link

    
risposta data 12.02.2016 - 05:18
fonte

Leggi altre domande sui tag