In zsh, wenn Sie Bereiche in Dateinamen verwenden möchten, bietet zle <1-n>
auf echte Namen, auf denen es erweitert werden kann. Das heißt:
$ touch a0b a1b a5b a7b
$ print a<0-100>b
Und dann traf <Tab>
direkt nach dem letzten b
würden Sie mit print a0b a1b a5b a7b
auf der Linie erweitert verlassen.
Für alle anderen Absichten und Zwecke - vielleicht verschiedenen Anforderungen, nicht-Datei und Scripting - ich würde ausdrücken dies die eher knappe idiomatische zsh-Schleife als:
for n ({1..50}); do print $n; done
Erlaubt Ihnen den gesamten Prozess Sequenzbereich von Zahlen 1 bis 50 :), nach dem Sie viele nützliche Dinge tun können, mit, wie eine Dateisammlung, die noch nicht existiert:
arr=($(for n ({1..50}); do print /my/path/file$n.txt; done)) && print $arr[33]
so haben wir zwei Räume: ein nicht-Wildcard und der andere ist Platzhalter. Wenn es einen Platzhalter gibt, zwingt es mich, nur Platzhalterzeichen zu verwenden. Auf die gleiche Weise können Sie nur Nicht-Wildcard-Zeichen verwenden. - - Vielen Dank für Ihre Antwort! –
@Masi: Nicht ganz. Wenn ich ein Verzeichnis mit 1-hello.gif, 2-world.gif, ..., 20-foobar.gif hätte, würde '{1..20} - *. Gif' vollkommen in Ordnung sein, um ihnen zu entsprechen, während' [1-20] - *. Gif' würde nur den ersten beiden entsprechen. Dies führt zu dem gleichen Fehler wie in Ihrer Frage, wenn eine der sequenziell nummerierten Dateien fehlt. – ephemient
@ephemient: Meinst du, dass [1-20] Datei nicht funktioniert, wenn Sie zum Beispiel 7File nicht haben? - Wenn ja, welchen Nutzen hat die Verwendung von [1-20] anstelle von {1..20}, wodurch Sie nicht das Problem haben? –