• [^] # Re: ranger un peu le souc du /home/user

    Posté par . En réponse au journal ranger un peu le souc du /home/user. Évalué à 2.

    Ce commentaire ne sera probablement jamais lu vu que le journal à plus de 24H, mais bon...

    La réponse est "oui et non". L'expansion que bash fait sur les nom de fichiers est loin d'être aussi puissante que les regexp, mais ne se limite pas pour autant au joker "*". En gros, de tête les trucs dont je sais qu'ils marchent parceque je les utilises :
    - * est substituable par une chaine quelconque, éventuellement vide
    - ? est substituable par exactement un caractère quelconque
    - [X-Y] est substituable par exactement un caractère de l'intervale X-Y (ça peut être [0-9], [a-z], [A-Z], etc.)
    - [XY] est substituable par exactement X ou Y
    - [^X] est substituable par n'importe quel caractère différent de X
    - les 3 syntaxes précédentes sont combinables évidement : [0-9abcdef] ou bien encore [0-9a-f] sont substituables par 0, 1, ..., a, b, ..., ou f.
    - toutes ces substitutions sont cantonnées à exactement un nom de fichier ou répertoire, c'est à dire qu'elles ne concernent que les caractères valides pour les noms de fichiers, et qu'elle ne peuvent en particulier pas être à cheval sur un slash (elle ne matchent pas un path). Par contre, on peut bien sûr les enchainer explicitement avec des slash pour matcher un path : h*/t* matchera bien /home/thomas.
    - le shell fait l'expansion des paramètres avant d'appeler effectivement la commande, et c'est donc utilisable quelle que soit la commande (pas seulement les commandes standard de bash donc). Par exemple, 'gvim foo[0-9].bar' dans un répertoire ou existent 'foo1.bar' et 'foo2.bar' deviendra 'gvim foo1.bar foo2.bar'.

    Voilà pour ce que moi j'utilise et je sais, après `man bash` en dira sûrement plus...

    Mais quand on veut faire des choses un peu plus fines, il faut quand même ce rabattre sur une combinaison de find et de grep.