[Linux-31] tri par nom
jpcas
jpcas at free.fr
Mer 7 Jan 19:22:33 CET 2015
Le 07/01/2015 19:04, jdanield a écrit :
> Le 07/01/2015 18:16, jpcas a écrit :
>
>> $ for i in *.*;do rep="${i::1}" && mkdir -vp "${rep^}" && mv -v "${i}"
>> "${rep^}"/"${i}";done
>
> oui...
>
> c'est passionnant, le bash, quand on a du temps à perdre :-)
Pas juste du temps à perdre, juste de la passion et de la pratique.
>
> for i in *.*, je comprends, sauf que pourquoi *.* et pas * ?
Sinon, il prend tout ce qu'il trouve y compris d'éventuels répertoires
comme dans mon exemple, ce qui n'est pas le but…
>
> d'ailleurs je crois que
>
> for i ;
>
> fait la même chose. il y a sûrement des finesses que je ne connais pas :-(
Oui, mais voir explication ci-dessus.
>
> i::1
>
> m'a donné du fil à retordre (pas facile à chercher sure le web)
>
> http://wiki.bash-hackers.org/syntax/pe#substring_expansion
*
Suffit juste d'ouvrir le man bash, tout y est aussi expliqué
(http://man.cx/bash%281%29/fr#heading14) voir la partie Remplacement de
paramètres
>
> en fait : (colon, en anglais), est un opérateur de sous-chaine
>
> chaine:debut:nombre
>
> là il faut lire: chaine-i:0:1 donc 1 caractère à partir du début de la
> chaine i. Ouf!
>
> le ^ après rep, c'est pour tout mettre en majuscules, bonne idée.
>
> et ca marche nickel,
>
> merci!
De rien ;-))
> jdd
Plus d'informations sur la liste de diffusion Linux-31