Tar --transform : petite difficulté

Fermé
gnu5 - 30 oct. 2017 à 20:26
 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 !
A voir également:

1 réponse

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
31 oct. 2017 à 08:56
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
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 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > gnu5
31 oct. 2017 à 10:56
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 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615 > gnu5
Modifié le 31 oct. 2017 à 11:14
je ne pense pas que des fichiers contiennent des ;
essayer
$ sed -r 's+/+;+g; s+;([^;]*$)+/\1+; s+;+_+g'  fichier
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 407 > dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024
31 oct. 2017 à 11:15
Il n'est pas question de points virgules, mais d'underscores ;-(
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
Modifié le 31 oct. 2017 à 11:29
on remplace les / par des ;
on remplace le dernier ; par un /
on remplace les ; par des _
0