Giải pháp vỏ POSIX
Giải pháp đầu tiên của terdon dựa vào việc mở rộng niềng răng , vốn là một đặc tính của bash
và ksh
, tuy nhiên, nó không thể được sử dụng trong hệ /bin/sh
vỏ tiêu chuẩn , mà trên Ubuntu được liên kết với nhau /bin/dash
.
Trong trường hợp bạn phải dựa /bin/sh
vào tính di động của tập lệnh, thường có hai cách để tiếp cận điều này. Một sẽ được thông qua Globing. Chỉ cd folderA
và từ đó chạy rm a_*
. Một cách khác, sẽ là triển khai kiểu chữ C để thay thế vòng lặp bằng while <CONDITION>;do ...done
ngôn ngữ shell và định dạng các số với printf
:
$ sh -c 'i=0;while [ $i -le 750 ]; do filename=$(printf "a_%06d" $i);echo "$filename";i=$((i+1)) ;done'
Lưu ý rằng ở đây tôi sử dụng echo
. Thay thế echo "$filename"
bằng rm ./"$filename"
hoặc rm -- "$filename"
khi bạn đã sẵn sàng để xóa các tập tin. Cũng lưu ý rằng điều này nên được thực hiện khi bạn đã cd
ed vào thư mục mong muốn.
(ab) sử dụng awk
Awk là một ngôn ngữ giống như C có thể giúp chúng ta theo hai cách: (1) chúng ta có thể tạo tên tệp bằng vòng lặp for và định dạng chúng thông qua sprintf
chức năng, và (2) xóa các tệp đã nói thông qua system()
lệnh, sẽ chuyển tên tệp và rm
lệnh được tạo của chúng ta để /bin/sh
:
awk 'BEGIN{for(i=0;i<=750;i++){filename=sprintf("a_%06d",i);system("rm "filename);} }'
Perl
Tiếp tục với ý tưởng về cách tiếp cận di động nơi chúng tôi "tạo" tên tệp, chúng tôi có thể làm tương tự trong Perl:
perl -le 'for(0..750){$fd=sprintf("a_%06d",$_);unlink($fd)}'