POSIX Shell解决方案
terdon的第一个解决方案 依赖于括号扩展,这是bash
and 的属性ksh
,但是不能在标准/bin/sh
shell中使用,在Ubuntu上,标准shell 被符号链接到/bin/dash
。
如果您必须依靠/bin/sh
脚本的可移植性,通常有两种方法可以解决此问题。一种可能是通过遍历。就cd folderA
从那里跑rm a_*
。另一种方法是while <CONDITION>;do ...done
在外壳语言中使用C样式的循环替代方法,并使用以下格式格式化数字printf
:
$ sh -c 'i=0;while [ $i -le 750 ]; do filename=$(printf "a_%06d" $i);echo "$filename";i=$((i+1)) ;done'
请注意,这里我使用echo
。当您准备删除文件时,请echo "$filename"
用rm ./"$filename"
或替换rm -- "$filename"
。还要注意,这应该在您已经cd
进入所需目录时执行。
(ab)使用awk
Awk是一种不错的类似于C的语言,可以通过两种方式为我们提供帮助:(1)我们可以使用for循环生成文件名并通过sprintf
函数对其进行格式设置,以及(2)通过system()
命令删除所述文件,这将传递我们生成的文件名和rm
命令至/bin/sh
:
awk 'BEGIN{for(i=0;i<=750;i++){filename=sprintf("a_%06d",i);system("rm "filename);} }'
佩尔
继续使用“生成”文件名的可移植方法的思想,我们可以在Perl中执行相同的操作:
perl -le 'for(0..750){$fd=sprintf("a_%06d",$_);unlink($fd)}'