Bonjour,
malgré mes recherches sur le man je n'arrive pas à trouver la syntaxe pour connaitre le nom du dossier une fois l'archive décompressée.
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part tar -xvzf script.tar.gz
Bonjour,
malgré mes recherches sur le man je n'arrive pas à trouver la syntaxe pour connaitre le nom du dossier une fois l'archive décompressée.
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part tar -xvzf script.tar.gz
tar -tvzf script.tar.gz affiche le contenu de l'archive
peut être en pipant dans un cut ou un grep tu extraieras ton bonheur.
Le problème, c'est que tu peux avoir 0 ou plusieurs répertoires dans la même archive tar.
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
C'est à diretar -tvzf script.tar.gz affiche le contenu de l'archive
peut être en pipant dans un cut ou un grep tu extraieras ton bonheur.... je débute en shell !!!
Peu importe se que je veux c'est le premier dossier.Le problème, c'est que tu peux avoir 0 ou plusieurs répertoires dans la même archive tar.
Merci
dans cet exemple le pipe "|" sert à dire à awk d'interpreter l'affichage renvoyé par tar pour faire simple ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 $ tar czf t.tar.gz Scripts/ $ tar tzvf t.tar.gz | awk '{print $9}' Scripts Scripts/Test Scripts/Valid Scripts/mdump.sh Scripts/startpsql $
donc si tu veux QUE les repertoires contenus à la racine de l'archive il suffit d'éliminer de l'affichage les fichiers contenus par ces derniers par exemple avec :
tres concrétement dans cet exemple même principe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 $ tar zcf t.tar.gz GNUstep/ Scripts/ Freemind/ $ tar tzvf t.tar.gz | sed "/\//d;s/.*:[0-9][0-9]//" GNUstep Scripts Freemind $
le "|" dit à sed de travailler sur l'affichage envoyé par tar.
quand à sed :
/\//d : toute ligne contenant au moins un "/" = delete
substitute "n'importe:chiffrechiffre" par "" (autrement dit ne garder que le nom du repertoire et pas son heure de creation proprietaire ou droits
ce qui te donne donc les noms de tous les repertoires à la racine de l'archive ....
si tu veux que le premier tu peux piper avec head -1 (1 = 1 ligne)
si tu veux que le dernier tu peux piper avec tail -1
sed c'est très puissant mais pas facile à utiliser au début
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $ tar tzvf t.tar.gz | sed "/\//d;s/.*:[0-9][0-9]//"| tail -1 Freemind $ tar tzvf t.tar.gz | sed "/\//d;s/.*:[0-9][0-9]//"| head -1 GNUstep $
tu peux aussi utiliser awk comme indiqué plus haut
ou print $9 peut etre interprété comme selectionner la 9ieme colonne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $ tar tzvf t.tar.gz | awk '{print $9}' | head -1 GNUstep $
bref la notion à comprendre est que | travaille sur le resultat affiché de la commande à sa gauche et non pas sur son résultat fonctionnel.
après tu apprendras les commandes petit à petit.
Merci pour tes explications mais en effet c'est chaud à comprendre !!! Voilà la solution que j'ai trouvé :
Je cherche à récupérer le 1er dossier commençant par "arch" dans l'archive "archive.tar.gz"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 tar xvzf archive.tar.gz nom_dossier=$(find /home/user/archive.tar.gz -maxdepth 1 -type d -name "arch*" -print )
Merci pour ton aide
Heu là, cela me parait brutal. Tu va décompresser ton archive en réel et faire un find dedans ?
Il est probable que l'on puisse faire la même chose sans d'archiver.
La réponse se situe dans une commande un peu comme celle ci (je n'ai pas de Linux sous la main pour t'aider plus) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part tar -tvzf <archive.tar.gz> | grep arch | awk '{print $1 }'
Raymond
Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi
CafuroCafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
e-verbeUn logiciel de conjugaison des verbes de la langue française.
Ma page personnelle sur DVP.
Bonjour,
Soucis : si tu as un fichier qui se nomme *arch* avant ton répertoire, ca te donne le nom du fichier, et pas le nom du dossier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part tar -tvzf archive.tar.gz | grep arch | head -1
Peut-être peut-on être plus rigoureux en utilisant basename en plus, mais je pense que c'est se compliquer la vie pour pas grand chose.
Partager