107 votes

Boucle dans les alphabets en Bash

Je veux mv tous les fichiers commençant par 'x' dans le répertoire 'x' ; quelque chose comme :

mv path1/x*.ext path2/x

et faites-le pour toutes les lettres de l'alphabet a, ..., z

Comment puis-je écrire un bash script qui fait des boucles 'x' à travers l'alphabet ?

173voto

Kamil Dziedzic Points 1048
for x in {a..z}
do
    echo "$x"
    mkdir -p path2/${x}
    mv path1/${x}*.ext path2/${x}
done

1 votes

Puis-je vous demander pourquoi vous mettez le x entre accolades sur la 4ème et la 5ème ligne ?

0 votes

Ce n'est pas obligatoire ici mais bon, ça marche, et fait mieux ressortir les paramètres ;) gnu.org/software/bash/manual/

1 votes

Habituellement "$x" est suffisante et une meilleure façon de la faire ressortir.

47voto

Mat Points 104488

Cela devrait vous permettre de commencer :

for letter in {a..z} ; do
  echo $letter
done

28voto

Luis Muñoz Points 256

Voici comment générer l'alphabet espagnol en utilisant l'expansion d'accolades imbriquées

for l in {{a..n},ñ,{o..z}}; do echo $l ; done | nl
1  a
 ...
14  n
15  ñ
16  o
...
27  z

Ou simplement

echo -e {{a..n},ñ,{o..z}}"\n" | nl

Si vous voulez générer le obsolète 29 caractères de l'alphabet espagnol

echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl

On pourrait faire de même pour l'alphabet français ou l'alphabet allemand.

1 votes

Alternative hideuse pour éviter de diviser l'alphabet : for j in $(for i in $(echo {a..z} ñ ch ll ); do echo $i; done| sort | xargs); do echo "Hello-$j"; done

5voto

Thanh Trung Points 978

Avec les majuscules également

for letter in {{a..z},{A..Z}}; do
  echo $letter
done

4voto

anishsane Points 5987

Utilisation de rename :

mkdir -p path2/{a..z}
rename 's|path1/([a-z])(.*)|path2/$1/$1$2' path1/{a..z}*

Si vous voulez supprimer le premier caractère [a-z] du nom de fichier, la version actualisée de perlexpr sera la suivante :

rename 's|path1/([a-z])(.*)|path2/$1/$2' path1/{a..z}*

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X