2 votes

Utilisation de la commande "tar" dans le terminal pour plusieurs dossiers/fichiers

J'ai de nombreux fichiers comme ceux-ci

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

...

Je veux déballer chaque .spa dans SomeDirectory dans leurs dossiers respectifs, avec le même nom. J'utiliserais quelque chose comme - tar -xvf mais avec quels attributs ?

Ensuite, je veux emballer chaque dossier dans SomeDirectory à nouveau à RandomName.spa (en conservant le nom du dossier). La commande serait tar -cvf mais avec quels attributs ?

0voto

Gustavo Bezerra Points 449

En supposant que (1) le .spa sont en fait .tar archives, (2) vous êtes dans SomeDirectory et (3) que les répertoires portant les noms des archives que vous voulez extraire n'existent pas, le code suivant devrait vous permettre d'obtenir ce que vous voulez :

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

Ou si vous préférez une phrase toute faite :

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

La première ligne de la for La boucle dépouille le .spa à partir du nom de l'archive et l'assigne à une variable, qui est utilisée dans la deuxième ligne pour créer un répertoire avec ce nom, et dans la troisième ligne en tar con el -C argument.

El -C argument dans tar ne fait que changer de répertoire pendant l'extraction et ne fait pas faire un, rendant les choses un peu plus compliquées qu'elles ne devraient l'être.

Crédit : Cette réponse est une légère modification de https://superuser.com/a/748567/226246

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X