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 POSIX Discussion :

Comment désigner le complémentaire de *.truc


Sujet :

Shell et commandes POSIX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur modélisation aérodynamique
    Inscrit en
    Juillet 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur modélisation aérodynamique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 105
    Par défaut Comment désigner le complémentaire de *.truc
    Bonjour,

    Je cherche à supprimer dans un dossier tous les éléments qui n'ont pas une certaine extension.
    Par exemple, peut-on désigner "tous les fichiers qui ne sont PAS dans *.tar" ?

    Merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Avec find et la négation (!) sur la recherche de son nom sous forme de regex (*.tar) :

    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
    24
    25
    26
    $ ls -1
    foo.sh*
    tata.tar
    tete.tar
    titi.tar
    toto.doc
    toto.gif
    toto.jpg
    toto.png
    toto.sh
    toto.tar
    toto.txt
    toto.xls
    tutu.tar
    
    $ find . -type f ! -name "*.tar" -exec echo "rm -f {}" \;
    rm -f ./toto.sh
    rm -f ./toto.gif
    rm -f ./toto.png
    rm -f ./toto.xls
    rm -f ./toto.doc
    rm -f ./toto.jpg
    rm -f ./toto.txt
    rm -f ./foo.sh
    
    $

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur modélisation aérodynamique
    Inscrit en
    Juillet 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur modélisation aérodynamique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 105
    Par défaut
    Merci

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Cette syntaxe est peu connue, mais c'est standard et c'est bien pratique. De même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ?(pattern-list)
    *(pattern-list)
    +(pattern-list)
    @(pattern-list)

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur modélisation aérodynamique
    Inscrit en
    Juillet 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur modélisation aérodynamique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 105
    Par défaut
    Bonjour matafan,

    La syntaxe que tu propose ne marche pas chez moi :
    De même que les autres.

    Je suis sous la distribution Red Hat de Linux , shell bash.

    ---------------------------------------------------------

    Petite correction :

    si je passe en ksh, la syntaxe est acceptée. Mais je n'aime pas ce shell. Y a-t-il un moyen de faire passer la syntaxe en bash ?

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    Quelle erreur as-tu ? Ca devrait marcher avec bash. D'ailleurs chez moi ça marche avec bash :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    0)tmp $ ls
    tata  tata.tar  toto  toto.tar
    0)tmp $ echo !(*.tar)
    tata toto

  7. #7
    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
    Citation Envoyé par matafan Voir le message
    Cette syntaxe est peu connue, mais c'est standard et c'est bien pratique. De même que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ?(pattern-list)
    *(pattern-list)
    +(pattern-list)
    @(pattern-list)

    juste une précision : ça dépand des shell

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur modélisation aérodynamique
    Inscrit en
    Juillet 2009
    Messages
    105
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur modélisation aérodynamique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 105
    Par défaut
    Bonjour,

    Voici le retour de la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    > shopt -p | grep extglog
    shopt -u extglob
    Je ne suis vraiment pas un expert en shell, donc je ne sais pas trop ce que ça veut dire. L'option "extglob" est-elle activée ? Si oui, pourquoi la syntaxe ne marche toujours pas, si non, comment faire pour l'activer ?

    Merci

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 17/04/2007, 07h09
  2. [c#]Comment désigner un contrôle de façon dynamique ?
    Par Filippo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/11/2006, 14h01
  3. comment désigner une occurence d'1 TImageList
    Par OutOfRange dans le forum Delphi
    Réponses: 5
    Dernier message: 27/09/2006, 23h05
  4. comment désigner un composant créé dynamiquement
    Par OutOfRange dans le forum Composants VCL
    Réponses: 4
    Dernier message: 24/09/2006, 10h55
  5. comment désigner 1 objet sur 1 fiche en execution
    Par OutOfRange dans le forum Langage
    Réponses: 8
    Dernier message: 05/11/2005, 10h34

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