Tar --transform : petite difficulté

gnu5 -  
 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 !
A voir également:

1 réponse

dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
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
0
gnu5
 
Salut,
Merci,
Je pense hélas que ça ne va pas fonctionner si un fichier contient un ou plusieurs caractère _

J'essaie
0
zipe31 Messages postés 38797 Statut Contributeur 6 433 > gnu5
 
Salut,
Je pense hélas que ça ne va pas fonctionner si un fichier contient un ou plusieurs caractère _
En même temps ça ne faisait pas partie de la demande initiale ;-\
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637 > gnu5
 
je ne pense pas que des fichiers contiennent des ;
essayer
$ sed -r 's+/+;+g; s+;([^;]*$)+/\1+; s+;+_+g'  fichier
0
zipe31 Messages postés 38797 Statut Contributeur 6 433 > dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention  
 
Il n'est pas question de points virgules, mais d'underscores ;-(
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
on remplace les / par des ;
on remplace le dernier ; par un /
on remplace les ; par des _
0