Solution shell POSIX
La première solution de terdon repose sur l'expansion des accolades, qui est une propriété de bash
et ksh
, cependant, elle ne peut pas être utilisée dans le /bin/sh
shell standard , qui sur Ubuntu est lié à/bin/dash
.
Dans les cas où vous devez vous fier /bin/sh
à la portabilité de vos scripts, il y a généralement deux façons d'aborder cela. On serait via globbing. Juste cd folderA
et à partir de là, courez rm a_*
. L'autre façon, serait d'implémenter une alternative de style C pour les boucles en utilisant while <CONDITION>;do ...done
en langage shell et de formater les nombres avec printf
:
$ sh -c 'i=0;while [ $i -le 750 ]; do filename=$(printf "a_%06d" $i);echo "$filename";i=$((i+1)) ;done'
Notez qu'ici j'utilise echo
. Remplacez echo "$filename"
par rm ./"$filename"
ou rm -- "$filename"
lorsque vous êtes prêt à supprimer les fichiers. Notez également que cela doit être effectué lorsque vous avez déjàcd
édité dans le répertoire souhaité.
(ab) en utilisant awk
Awk étant un joli langage de type C peut nous aider de deux manières: (1) nous pouvons générer des noms de fichiers avec for-loop et les formater via une sprintf
fonction, et (2) supprimer lesdits fichiers via une system()
commande, qui passera notre nom de fichier généré et la rm
commande à /bin/sh
:
awk 'BEGIN{for(i=0;i<=750;i++){filename=sprintf("a_%06d",i);system("rm "filename);} }'
Perl
Poursuivant avec l'idée d'une approche portable où nous "générons" des noms de fichiers, nous pouvons faire de même en Perl:
perl -le 'for(0..750){$fd=sprintf("a_%06d",$_);unlink($fd)}'