0

我有一堆文件,例如:

0000
0100
0200
0300
0400
0500
0600
0700
0800
0900
1000
1100
1200
1300
1400

如果我指定输入8,如何匹配0800以下的文件?我在ubnutu上使用shell。

更新

对不起,也许我不清楚。

我有一个命令,它有一个用于指定一堆输入的参数,例如 tt***.txt 或 rrr???.txt。我想要的是指定那些低于 0800 的文件。

4

3 回答 3

1

使用 awk:

awk -v x=8 'BEGIN{x=sprintf("%04d",x*100);}$1<x' file
于 2012-10-31T06:05:45.527 回答
0
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

于 2012-10-31T13:23:53.253 回答
0

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 之类的文件:()

于 2012-10-31T06:26:42.147 回答