POSIX-Shell-Lösung
Die erste Lösung von terdon basiert auf der Klammererweiterung , die eine Eigenschaft von ist bash
und ksh
jedoch nicht in der Standard- /bin/sh
Shell verwendet werden kann, mit der Ubuntu verknüpft ist /bin/dash
.
In Fällen, in denen Sie sich auf die /bin/sh
Portabilitä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 folderA
und von dort laufen rm a_*
. Die andere Möglichkeit wäre die Implementierung einer C-ähnlichen for-Loop-Alternative while <CONDITION>;do ...done
in 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 cd
in 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 sprintf
Funktion formatieren und (2) die Dateien über einen system()
Befehl löschen , der unseren generierten Dateinamen und rm
Befehl ü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)}'