POSIX-Shell-Lösung
Die erste Lösung von terdon basiert auf der Klammererweiterung , die eine Eigenschaft von ist bashund kshjedoch nicht in der Standard- /bin/shShell verwendet werden kann, mit der Ubuntu verknüpft ist /bin/dash.
In Fällen, in denen Sie sich auf die /bin/shPortabilität Ihrer Skripte verlassen müssen, gibt es im Allgemeinen zwei Möglichkeiten, um dies zu erreichen. Man würde über Globbing sein. Gerade cd folderAund von dort laufen rm a_*. Die andere Möglichkeit wäre die Implementierung einer C-ähnlichen for-Loop-Alternative while <CONDITION>;do ...donein der Shell-Sprache und das Formatieren der Zahlen mit printf:
$ sh -c 'i=0;while [ $i -le 750 ]; do filename=$(printf "a_%06d" $i);echo "$filename";i=$((i+1)) ;done'
Beachten Sie, dass ich hier verwende echo. Ersetzen Sie echo "$filename"durch rm ./"$filename"oder, rm -- "$filename"wenn Sie bereit sind, die Dateien zu löschen. Beachten Sie auch, dass dies durchgeführt werden sollte, wenn Sie sich bereits cdin dem gewünschten Verzeichnis angemeldet haben.
(ab) awk benutzen
Awk, eine nette C-ähnliche Sprache, kann uns auf zwei Arten helfen: (1) Wir können Dateinamen mit for-loop generieren und sie über die sprintfFunktion formatieren und (2) die Dateien über einen system()Befehl löschen , der unseren generierten Dateinamen und rmBefehl übergibt zu /bin/sh:
awk 'BEGIN{for(i=0;i<=750;i++){filename=sprintf("a_%06d",i);system("rm "filename);} }'
Perl
Weiter mit der Idee des portablen Ansatzes, bei dem wir Dateinamen "generieren", können wir dasselbe in Perl tun:
perl -le 'for(0..750){$fd=sprintf("a_%06d",$_);unlink($fd)}'