Soluzione shell POSIX
La prima soluzione di terdon si basa sull'espansione del controvento, che è una proprietà di bash
e ksh
, tuttavia, non può essere utilizzata nella /bin/sh
shell standard , a cui su Ubuntu è collegato un link simbolico /bin/dash
.
Nei casi in cui devi fare affidamento /bin/sh
per la portabilità dei tuoi script, ci sono generalmente due modi per affrontarlo. Uno sarebbe tramite globbing. Appenacd folderA
e da lì corri rm a_*
. L'altro modo, sarebbe implementare uno stile C per l'alternativa del ciclo usando while <CONDITION>;do ...done
nel linguaggio shell e formattare i numeri con printf
:
$ sh -c 'i=0;while [ $i -le 750 ]; do filename=$(printf "a_%06d" $i);echo "$filename";i=$((i+1)) ;done'
Si noti che qui uso echo
. Sostituisci echo "$filename"
con rm ./"$filename"
o rm -- "$filename"
quando sei pronto per eliminare i file. Si noti inoltre che ciò dovrebbe essere eseguito quando si è già cd
inseriti nella directory desiderata.
(ab) usando awk
Awk essendo un bel linguaggio simile a C può aiutarci in due modi: (1) possiamo generare nomi di file con for-loop e formattarli tramite la sprintf
funzione, e (2) eliminare tali file tramite system()
comando, che passerà il nostro nome di file generato erm
comando a /bin/sh
:
awk 'BEGIN{for(i=0;i<=750;i++){filename=sprintf("a_%06d",i);system("rm "filename);} }'
Perl
Continuando con l'idea dell'approccio portatile in cui "generiamo" nomi di file, possiamo fare lo stesso in Perl:
perl -le 'for(0..750){$fd=sprintf("a_%06d",$_);unlink($fd)}'