我有一堆文件,例如:
0000
0100
0200
0300
0400
0500
0600
0700
0800
0900
1000
1100
1200
1300
1400
如果我指定输入8,如何匹配0800以下的文件?我在ubnutu上使用shell。
更新
对不起,也许我不清楚。
我有一个命令,它有一个用于指定一堆输入的参数,例如 tt***.txt 或 rrr???.txt。我想要的是指定那些低于 0800 的文件。
使用 awk:
awk -v x=8 'BEGIN{x=sprintf("%04d",x*100);}$1<x' file
n=8
printf -v filename "%02d00" $n # 0800
param='????'
for f in $param; do
[[ $f > $filename ]] && continue
# do something with $f
echo $f
done
唯一的条件是注意将文件名与目标文件进行字符串比较,而不是数字比较——默认情况下,“0800”和“0900”将被视为八进制,当然它们是无效的八进制数。如果要使用数字比较,请注意指定基数:
(( 10#$f > 10#$filename )) && continue
Bash(假设这里是其他名称的文件)
c=0;
for file in [0-9][0-9][0-9][0-9];
do
if [[ $file> 0800 ]];
then
((c++));
fi;
done;
echo $c;
如果这里有超过 4 位数的文件,则使用for file in [0-9][0-9][0-9][0-9]*;
(它也可以获取 0000aaaa 之类的文件:()