IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Connaitre nom dossier de l'archive décompressée


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut Connaitre nom dossier de l'archive décompressée
    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.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tar -xvzf script.tar.gz
    Merci

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    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

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut
    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.
    C'est à dire ... je débute en shell !!!
    Le problème, c'est que tu peux avoir 0 ou plusieurs répertoires dans la même archive tar.
    Peu importe se que je veux c'est le premier dossier.

    Merci

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    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
    $
    dans cet exemple le pipe "|" sert à dire à awk d'interpreter l'affichage renvoyé par tar pour faire simple ...

    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 :

    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
    $
    tres concrétement dans cet exemple même principe :
    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

    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
    $
    sed c'est très puissant mais pas facile à utiliser au début
    tu peux aussi utiliser awk comme indiqué plus haut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ tar tzvf t.tar.gz | awk '{print $9}' | head -1              
    GNUstep
    $
    ou print $9 peut etre interprété comme selectionner la 9ieme colonne


    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.

  5. #5
    Membre éclairé Avatar de Général03
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 848
    Par défaut
    Merci pour tes explications mais en effet c'est chaud à comprendre !!! Voilà la solution que j'ai trouvé :
    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 )
    Je cherche à récupérer le 1er dossier commençant par "arch" dans l'archive "archive.tar.gz"

    Merci pour ton aide

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    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

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Bonjour,

    Citation Envoyé par Général03 Voir le message
    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
    tar -tvzf archive.tar.gz | grep arch | head -1
    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.
    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.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Connaitre nom utilisateur avec PHP
    Par saluts92b dans le forum Linux
    Réponses: 2
    Dernier message: 10/12/2007, 13h46
  2. Réponses: 8
    Dernier message: 11/06/2007, 15h16
  3. [vb.net]connaitre Nom PC et IP
    Par roxanne dans le forum Windows Forms
    Réponses: 6
    Dernier message: 30/08/2006, 10h23
  4. Connaitre le dossier cible d'un clique
    Par nostroyo dans le forum Windows
    Réponses: 9
    Dernier message: 13/01/2006, 09h58
  5. [SQL] Affichage dossier + liens sur nom dossier
    Par joxbl dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 10/11/2005, 15h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo