Menu

Tar --transform : petite difficulté

gnu5 - 30 oct. 2017 à 20:26 - Dernière réponse :  gnu5
- 31 oct. 2017 à 11:43
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 !
Afficher la suite 

Votre réponse

9 réponses

dubcek 17429 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 28 mai 2018 Dernière intervention - 31 oct. 2017 à 08:56
0
Merci
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 35644 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention > dubcek 17429 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 28 mai 2018 Dernière intervention - 31 oct. 2017 à 11:15
Il n'est pas question de points virgules, mais d'underscores ;-(
dubcek 17429 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 28 mai 2018 Dernière intervention - 31 oct. 2017 à 11:28
on remplace les / par des ;
on remplace le dernier ; par un /
on remplace les ; par des _
zipe31 35644 Messages postés dimanche 7 novembre 2010Date d'inscriptionContributeurStatut 23 juin 2018 Dernière intervention > dubcek 17429 Messages postés lundi 15 janvier 2007Date d'inscriptionContributeurStatut 28 mai 2018 Dernière intervention - 31 oct. 2017 à 11:31
Oups je n'avais point jeter un œil à la regex ;-(
Toutes mes confuses.
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)
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
Commenter la réponse de dubcek