0

次のようなファイルがたくさんあります。

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

入力 8 を指定した場合、0800 未満のファイルを一致させるにはどうすればよいですか? ubnutu でシェルを使用しています。

アップデート

申し訳ありませんが、はっきりしていないかもしれません。

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" はデフォルトで 8 進数として扱われ、もちろん無効な 8 進数です。数値比較を使用する場合は、基数を指定するように注意してください。

(( 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 に答える