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 :

Identifier l'extension de fichiers


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Homme Profil pro
    visiteur
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : visiteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut Identifier l'extension de fichiers
    Bonjour,
    j'ai un petit soucis avec un mon script shell


    ca marche que pour .c sinon tout les autres fichiers sont inconnus, je pence perso, qu'il y a un problème dans les crochets mais je ne sais pas lequel.
    pouvez vous m'aider svp

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

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

    les crochets introduisent un groupe de caractères.
    c'est pour ça que ça marche avec .c ! parce qu'il est cherché un . ou le caractère c.

    ici, les crochets ne servent à rien.

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

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

    "reponse" est avec un "s", pas un "c".
    "tapez" est avec un seul "p", pas deux. (l'infinitif "er" est douteux quand c'est un impératif "ez" ).
    Il manque une majuscule en début de phrase.
    Il manque une espace avant les deux points. (une demi-espace fine insécable, dans l'idéal).
    Pourquoi l'extension "html" est demandée en minuscules alors que l'extension "JPEG" est demandée en majuscules ?
    Le shebang doit être sur la première ligne du script.
    "script" ne prend pas de "e".
    "penser" avec un "s", pas un "c".
    "mais", pas "mes".
    Il manque toujours une majuscule en début de phrase et un point d'interrogation en fin de phrase après une demi-espace fine insécable.

    il y a un problème (...) mais je ne sais pas lequel
    As-tu regardé du côté de l'orthographe. Tu as sûrement tapé n'importe quoi. N'est-ce pas ?

  4. #4
    Membre actif
    Homme Profil pro
    visiteur
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : visiteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut
    bonjour
    merci ça fonctionne mieux maintenant
    je dois faire une dernière chose, c'est mettre le nombre de fichier par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    fichier.c
    fichier1.c
    fichier.txt
    fichier c : 2
    fichier texte : 1
    ou un truc du genre. J'ai essayé avec une boucle for mais j'ai un peu de mal, je viens de commencer les boucles en shell.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 738
    Par défaut
    on navigue à vue, là.
    ce n'est pas très agréable, parce qu'on n'a pas une vue globale de ce qu'il y a à faire.

    s'il ne s'agit que de compter les fichiers en fonctions de leur extension :
    l'extension d'un fichier peut être récupérée en utilisant le Remplacement des paramètres avec le Retrait du motif correspondant au préfixe.
    un tableau peut lister ces extensions, et un tableau associatif peut servir à les compter.

    au-delà, il faut préciser ton besoin global.

  6. #6
    Membre actif
    Homme Profil pro
    visiteur
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : visiteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut
    Bonjour

    toujours par rapport au premier scripte, j'aimerai maintenant qu'il me dise combien il y a de fichier au total mais en fonction du type. C'est pour ça que je parlais d'une boucle for

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 738
    Par défaut
    combien il y a de fichier au total mais en fonction du type
    c'est contradictoire : c'est OU au total OU pour chaque "type".

    je ne suis pas convaincu qu'un case/esac soit une bonne méthode.

    tu donnes l'extension dont tu veux compter le nombre de fichiers,
    tu boucles sur les fichiers ayant cette extension, et tu y incrémentes une variable.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 304
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ~ -type f -name "*.*" | sed 's/.*\.//' | sort | uniq -c

  9. #9
    Membre actif
    Homme Profil pro
    visiteur
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : visiteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut
    Citation Envoyé par N_BaH Voir le message

    je ne suis pas convaincu qu'un case/esac soit une bonne méthode.

    tu donnes l'extension dont tu veux compter le nombre de fichiers,
    tu boucles sur les fichiers ayant cette extension, et tu y incrémentes une variable.
    du coup, avec un for, je pourrai afficher les fichiers du répertoire mais aussi donner leurs nombres total avec des numéros en fonctions de leurs types (fichiers)?
    Sachant que ls permet d'afficher (lister) les fichiers, faut-il intégrer le ls dans le for ?

  10. #10
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    Pourquoi faire simple quand on peut faire compliqué ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     file -b * | sort |uniq -c

  11. #11
    Membre actif
    Homme Profil pro
    visiteur
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : visiteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut
    bonjour,
    je ne comprends pas les commandes comme ça, j'aimerai bien avoir de l'aide pour faire un script avec une boucle svp, je viens juste de débuter dans la matière.
    merci

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 738
    Par défaut
    Sachant que ls permet d'afficher (lister) les fichiers, faut-il intégrer le ls dans le for ?
    NOooooon !
    aparté : ça va comme ça, balkany ? L'attente n'a pas été trop longue ?
    Citation Envoyé par NBaH
    ON N'UTILISE PAS ls DANS UN SCRIPT !!!!
    plus précisément, on n'utilise pas ls (et d'une manière générale, une Substitution de commandes) dans une boucle for;
    entre autres parce que for lit des mots, pas des lignes, et qu'une Substitution de commandes, pour être exploitable par for, ne protègent les espaces, et autres caractères qui pourraient être interprétés par le shell.

    pour lister les fichiers d'un répertoire, on utilise le Développement des chemins (globbing).

  13. #13
    Membre émérite Avatar de balkany
    Homme Profil pro
    Touriste
    Inscrit en
    Juillet 2017
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Touriste

    Informations forums :
    Inscription : Juillet 2017
    Messages : 348
    Par défaut
    Pour l'attente, ça va, mais je suis un peu déçu que la question ait été posée en français, et pas codée : il manque l'utilisation des backticks

  14. #14
    Membre actif
    Homme Profil pro
    visiteur
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : visiteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut
    bonjour

    est ce qu'il y a pas un moyen de faire un script simple, seulement avec des variables ou des trucs du genre, je ne comprends pas trop les commandes que vous avez mis
    voici un exemple du résultat final

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #supposons que mon repertoire courant possède les fichiers suivant : fichier.c fichier.JPG et fichier.html.  on doit avoir ceci à la fin
     
    fichier.c: Fichier source C
    fichier.JPG: Image jpeg
    fichier.html: Fichier html
    fichier.gif: Type de fichier inconnu
     
    #ensuite modifier le scripte afin qu'il affiche le nombre de fichier de chaque type

  15. #15
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Par défaut
    C'est pourtant pas compliqué de rendre service
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #!/bin/bash
    file=( * )
     for i in ${file[@]}
     do   (  [  ${i##*.} == "tar" ] && echo "$i est un fichier archive" ) || ( [  ${i##*.} == "jpg"  ] && echo "$i est un fichier image"  )  || echo $i est inconnu
     done
     echo  il y a ${#file[@]} " fichiers "

  16. #16
    Membre actif
    Homme Profil pro
    visiteur
    Inscrit en
    Décembre 2019
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : visiteur
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2019
    Messages : 21
    Par défaut
    bonjour,

    merci becket, je l'ais modifié en fonction de la consigne
    j'aimerai juste savoir à quoi sert file=(*) et ${file[@]} svp

Discussions similaires

  1. extension de fichier
    Par pierrOPSG dans le forum C
    Réponses: 7
    Dernier message: 17/06/2006, 14h47
  2. Extensions de fichiers gérées par Apache
    Par JoN28fr dans le forum Apache
    Réponses: 2
    Dernier message: 03/04/2006, 18h30
  3. Réponses: 2
    Dernier message: 14/11/2005, 19h25
  4. PHP5 et extension de fichiers...
    Par Royd938 dans le forum Langage
    Réponses: 3
    Dernier message: 17/10/2005, 11h38

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