Signaler

Tar --transform : petite difficulté

Posez votre question gnu5 - Dernière réponse le 31 oct. 2017 à 11:43 par gnu5
Bonjour,

Je cherche à faire des modifications sur le nom complet des fichiers d'une archive tar lors de son extraction.

Plutôt que d'expliquer avec des mots, voici quelques exemples avec ce que je souhaite obtenir :

Imaginons une archive avec :
dossier1/ssdossier1/ssdossier2/fichier1
dossier1/fichier2
dossier1/ssdossier1/ssdossier2/fichier3
fichier4
dossier2/ssdossier3/fichier6


Il faudrait qu'en sortie tar me crée grâce aux expressions régulières des --transform (ou autre paramètre auquel je n'aurais pas pensé) :
Un dossier nommé dossier1_ssdossier1_ssdossier2/ contenant fichier1 et fichier3
Un dossier nommé dossier1 avec fichier2 dedans
Le fichier 4
Un dossier nommé dossier2_ssdossier3/ contenant fichier6.


Le problème en remplaçant les / par des _ est qu'il faut que je conserve le dernier / mais je ne trouve comment.


Auriez-vous une idée ?
D'avance, merci !
Utile
+0
plus moins
hello
essayer cette expresson
$ sed -r 's+/+_+g; s+_([^_]*$)+/\1+' fichier
dossier1_ssdossier1_ssdossier2/fichier1
dossier1/fichier2
dossier1_ssdossier1_ssdossier2/fichier3
fichier4
dossier2_ssdossier3/fichier6
zipe31 35131Messages postés dimanche 7 novembre 2010Date d'inscription ContributeurStatut 19 novembre 2017 Dernière intervention - 31 oct. 2017 à 11:15
Il n'est pas question de points virgules, mais d'underscores ;-(
Répondre
dubcek 17151Messages postés lundi 15 janvier 2007Date d'inscription ContributeurStatut 21 novembre 2017 Dernière intervention - 31 oct. 2017 à 11:28
on remplace les / par des ;
on remplace le dernier ; par un /
on remplace les ; par des _
Répondre
zipe31 35131Messages postés dimanche 7 novembre 2010Date d'inscription ContributeurStatut 19 novembre 2017 Dernière intervention - 31 oct. 2017 à 11:31
Oups je n'avais point jeter un œil à la regex ;-(
Toutes mes confuses.
Répondre
gnu5- 31 oct. 2017 à 11:33
Bonjour,
C'est vrai j'aurais dû préciser,

C'est pour faire de l'archivage avec tar, donc par dossier ou ssdossier je parle de n'importe quel nom de dossier
Idem pour fichier[123456] : n'importe quel nom de fichier valide
C'est à dire contenant n'importe quel caractère imprimable sauf /. Et comme je vais travailler ligne par ligne dans un premier temps, ce n'est pas non plus la peine de se soucier du caractère de saut de ligne dans les noms de fichiers ou de dossiers (il faut dire que ça fout la merde dans beaucoup de commandes linux si on crée de tels fichiers)
Répondre
gnu5- 31 oct. 2017 à 11:43
Je saurais le faire avec un script après extraction, mais si c'est possible avec une expression régulière j'aimerais le faire directement en une fois avec le/les --transform de tar
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !