• [^] # Re: C'est bon j'ai trouvé

    Posté par . En réponse au message Soustraire une liste de fichier à une autre liste. Évalué à 2.

    Zsh a un opérateur spécifique pour retirer des fichiers particuliers: ~

    Par exemple: print -l **/*~*.c va lister tout les fichiers, sauf les .c.

    Attention, le premier * est un opérateur de globbing et signifie « tous les fichiers d'un répertoire », mais le second * est un opérateur d'expression régulière Zsh et correspond à « n'importe quelle chaine ».

    Donc pour lister tous les fichiers et retirer uniquement les .c du répertoire courant, il faut une expression régulière qui refuse les \:
    print -l **/*.c~[^/]#.c

    Pour retirer une liste de fichiers spécifiques, il faut enchaîner les ~:
    print -l **/*.c~aaa.c~bbb.c~ccc.c

    Bien sûr, n'oubliez pas: setopt extendedglob