Dans zsh, si vous souhaitez utiliser des plages dans les noms de fichiers, zle propose <1-n>
sur tous les noms réels sur lesquels il peut développer. C'est-à-dire:
$ touch a0b a1b a5b a7b
$ print a<0-100>b
Et puis frappé <Tab>
juste après la finale b
vous laisserions print a0b a1b a5b a7b
élargi sur la ligne.
Pour toutes les autres fins - peut-être les exigences de gamme complète, non-fichier et l'utilisation de scripts - j'exprimer cela en utilisant la boucle de zsh idiomatiques plutôt succincts que:
for n ({1..50}); do print $n; done
Est-ce que vous permettra de traiter l'ensemble plage de la séquence des nombres 1 à 50 :) après quoi vous pouvez faire toutes sortes de choses utiles avec, comme une collection de fichiers qui n'existe pas encore:
arr=($(for n ({1..50}); do print /my/path/file$n.txt; done)) && print $arr[33]
nous avons donc deux espaces: l'un est non générique et l'autre est un espace générique. S'il existe un caractère générique, cela me force à n'utiliser que des caractères génériques. De la même manière, vous ne pouvez utiliser que des caractères non génériques. - - Merci pour votre réponse! –
@Masi: Pas tout à fait. Si j'avais un répertoire avec 1-hello.gif, 2-world.gif, ..., 20-foobar.gif, '{1..20} - *. Gif' fonctionnerait parfaitement bien pour les faire correspondre, alors que' [1-20] - *. Gif' ne correspond qu'aux deux premiers. Cela provoquera la même erreur que dans votre question si l'un des fichiers numérotés séquentiellement est manquant, cependant. – ephemient
@ ephemient: Voulez-vous dire que le fichier [1-20] ne fonctionne pas si vous n'avez pas, par exemple, 7File? - Si oui, quel est l'avantage d'utiliser [1-20] au lieu de {1..20} ce qui ne vous cause pas le problème? –