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 :

Script print propriétaire du fichier et nom fichier (avec une certaine syntaxe)


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Par défaut Script print propriétaire du fichier et nom fichier (avec une certaine syntaxe)
    Bonjours,
    auriez vous une idée pour afficher le proprio du fichier et le nom du fichier à l'aide d'un script ? (en envoie ls -l en entrée)

    contenu du dossier:

    toto hello.txt
    titi test1.txt
    toto test2.txt
    tata test3.txt
    toto myscipt.sh

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ls  -l | ./myscript.sh "test"
    titi test1.txt
    toto test2.txt
    tata test3.txt

    j'ai esseyé quelque trucs mais rien de concluant..

    j'ai testé : mais : -tous les résultats sont print en meme temps
    -je ne vois absolument pas comment get le user du fichier

    peut etre que je dois aller voir du coté de sed??
    Merci pour vos réponses,

    Bonne journée !

  2. #2
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 662
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    Bonjour,

    un pipe passe les données sur l'entrée standard d'une commande, il faut donc lire (read) ces données, tant que qu'il y a des données (à lire).
    les $1, $2... sont les paramètres positionnels du script : ce qui est passé en argument.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Expert confirmé Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 293
    Par défaut
    Bonjour

    On comprend rien.
    Citation Envoyé par awesomeman Voir le message
    auriez vous une idée pour afficher le proprio du fichier et le nom du fichier à l'aide d'un script ?
    On n'utilise pas ls dans un script.
    Donc déjà, ça règle la question.
    Tourne-toi plutôt vers find ou stat.

    Citation Envoyé par awesomeman Voir le message
    -tous les résultats sont print en meme temps
    Et en quoi est-ce un problème ?

    Citation Envoyé par awesomeman Voir le message
    -je ne vois absolument pas comment get le user du fichier
    Quel fichier ? si tu mets "test*" c'est pas étonnant qu'il y ait plusieurs fichiers avec chacun un propriétaire, éventuellement différent.

    Citation Envoyé par awesomeman Voir le message
    peut etre que je dois aller voir du coté de sed??
    Excellente idée. Mais encore faut-il que tu saches ce que tu veux.

  4. #4
    Membre expérimenté Avatar de silfun1
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2015
    Messages : 135
    Par défaut
    Bonjour à tous,

    Effectivement, le plus simple serait d'utiliser la comamnde find.
    Si tu souhaites quand meme le faire en bash, il faudrait :
    - Utiliser une boucle for pour parcourir le dossier (for fichier in ./* do .... done).
    - Passer un argument à ton script et utiliser grep pour filtrer le nom des fichiers (echo $fichier|grep tonfiltre)
    - Utiliser la comamnd stat pour récupérer et afficher le nom du propriétaire (stat -c %U $fichier)

    J'ai fait un script qui fonctionne avec ton exemple. Est ce que je te laisse chercher et trouver, ou veux tu que je l'affiche ?

    Sylvain

  5. #5
    Membre éprouvé Avatar de RaphaelG
    Homme Profil pro
    Amateur
    Inscrit en
    Juin 2016
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Amateur

    Informations forums :
    Inscription : Juin 2016
    Messages : 94
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    On comprend rien.
    On n'utilise pas ls dans un script.
    Donc déjà, ça règle la question.
    Tourne-toi plutôt vers find ou stat.
    ...
    Pourquoi ne pas utiliser ls ?
    Si on a peur des effets de la localisation, il suffit de mettre "export LANG=C" en tête du script.

    je vous propose cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    ~$ ls -l | awk '{print $3 " " $9}'
     
    raph adresse.html
    raph archives
    raph C
    raph Desktop
    raph divers
    raph Documents
    raph Downloads
    raph impots
    raph IT
    raph maison
    raph memo_perso2.odt
    raph Music
    raph Pictures
    raph PSE
    raph Public
    raph retraite
    raph sysAdm
    raph Templates
    raph Videos
    ~$

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 662
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 662
    Par défaut
    pourquoi se compliquer la tâche, lorsque stat peut le faire en une seule commande ?!
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Membre confirmé Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Par défaut
    je voulais juste faire ca enfait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #!/bin/bash
    if [ -z "$1" ]
    then
           awk '{if (NR!=1) print $3"\t"$9}'
    else
          awk '{if (NR!=1) print $3"\t"$9}' | grep -F $1*
    fi
    Bonne journée !

  8. #8
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    c'est clair que tu exprimes très mal ta question, mais bon si tu t'es compris et que t'as trouvé la réponse tant mieux

    plus simple que ton script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    awk -vregex="$1" 'NR > 1 && $0 ~ regex {print $3 "\t" $9}'

  9. #9
    Membre confirmé Avatar de awesomeman
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    166
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2015
    Messages : 166
    Par défaut
    non ce que tu propose cherche dans toute la string or je dois juste check si la string commence par le paramètre. pas si le paramètre est contenu dans la string .
    par contre j'ai un petit problème .. si c'est un dossier le grep m'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep: dir: est un dossier
    je tape cette commande la : ls -l | ./script.sh "d"

  10. #10
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par awesomeman Voir le message
    non ce que tu propose cherche dans toute la string or je dois juste check si la string commence par le paramètre. pas si le paramètre est contenu dans la string .
    ah ben du coup ta solution n'est pas bonne non plus alors

    du coup en modifiant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #!/bin/bash
    awk -vregex="$1" 'NR > 1 && $9 ~ "^" regex {print $3 "\t" $9}'
    par contre j'ai un petit problème .. si c'est un dossier le grep m'affiche [CODE]grep: dir: est un dossier
    un petit problème avec TON script donc, c'est normal, la faute au $1* qui est évalué/"déplié" par bash et non par grep
    du coup ça revient à avoir une commande du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    grep -F daga.c dev.sh dir/ doh.homer
    grep: dir/: Is a directory

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

Discussions similaires

  1. [Toutes versions] MACRO pour insérer une valeur venant d'un fichier fermé (nom fichier variable)
    Par Seb-1 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 30/01/2015, 15h48
  2. Réponses: 1
    Dernier message: 18/11/2008, 21h42
  3. [CSV] Télécharger un fichier sur le serveur avec une URL
    Par bolandfranck dans le forum Langage
    Réponses: 2
    Dernier message: 23/06/2007, 13h33
  4. Réponses: 7
    Dernier message: 29/05/2007, 15h11
  5. Réponses: 3
    Dernier message: 05/05/2006, 18h36

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