Solusi shell POSIX
Solusi pertama terdon bergantung pada ekspansi brace, yang merupakan properti dari , bash
dan ksh
bagaimanapun itu tidak dapat digunakan dalam /bin/sh
shell standar , yang pada Ubuntu disinkronkan dengan /bin/dash
.
Dalam kasus di mana Anda harus mengandalkan /bin/sh
portabilitas skrip Anda, umumnya ada dua cara untuk mendekati ini. Seseorang akan melalui globbing. Hanya cd folderA
dan dari sana lari rm a_*
. Cara lain, akan menerapkan C-style untuk alternatif loop menggunakan while <CONDITION>;do ...done
dalam bahasa shell dan memformat angka dengan printf
:
$ sh -c 'i=0;while [ $i -le 750 ]; do filename=$(printf "a_%06d" $i);echo "$filename";i=$((i+1)) ;done'
Perhatikan bahwa di sini saya gunakan echo
. Ganti echo "$filename"
dengan rm ./"$filename"
atau rm -- "$filename"
ketika Anda siap untuk menghapus file. Perhatikan juga, bahwa ini harus dilakukan ketika Anda sudah cd
masuk ke direktori yang diinginkan.
(ab) menggunakan awk
Awk menjadi bahasa mirip-C yang bagus dapat membantu kita dalam dua cara: (1) kita dapat menghasilkan nama file dengan for-loop dan memformatnya melalui sprintf
fungsi, dan (2) menghapus file tersebut melalui system()
perintah, yang akan melewati nama file dan rm
perintah yang dihasilkan untuk /bin/sh
:
awk 'BEGIN{for(i=0;i<=750;i++){filename=sprintf("a_%06d",i);system("rm "filename);} }'
Perl
Melanjutkan dengan gagasan pendekatan portabel di mana kita "menghasilkan" nama file, kita dapat melakukan hal yang sama di Perl:
perl -le 'for(0..750){$fd=sprintf("a_%06d",$_);unlink($fd)}'