关于awk的一个问题

关于awk的一个问题

在查看小于100 的文件,以及它们的总和:

ls -al |awk 'BEGIN{print "filename\tsize"}{if($1~/^-r/&&$5<=SIZE) printf("%-20s\t%-s\n",$NF,$5);if($1~/^-r/&&$5<=SIZE) total+=$5 }END{print "the total size is "  total}' SIZE=100

为了达到目的使其中的条件判断if($1~/^-r/&&$5<size)使用了两次


请问怎么才能在一个条件判断中完成统计以及打印符合条件的文件?      
davistar@davi ~/shell
$ ls -l|awk '$5 < 100'|awk '{printf "%s ",$5}'|awk '{sum=0;for(i=0;i<=NF;i++)sum+=$i;print sum }'      
复制内容到剪贴板
代码:
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]ls -l
total 72
-rwxr-xr-x     1 clark  clark  16968 Apr  3 21:52 a.out
drwxr-xr-x   182 clark  clark   6188 Mar 29 22:57 bash-3.1
-rw-r--r--     1 clark  clark     44 Apr  3 22:06 log
drwxr-xr-x    72 clark  clark   2448 Mar 12 20:50 pcre-6.3
-rwxr-xr-x     1 clark  clark    565 Apr  6 21:41 prime_test.sh.gz
-rw-r--r--     1 clark  clark    476 Apr  3 21:52 redir.c
-rwxr-xr-x     1 clark  clark    692 Apr 10 21:55 ssh.sh
drwxr-xr-x    43 clark  clark   1462 Apr  4 21:21 vim-7.0c08
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]ls -l | awk 'NF > 2 && $5 < 1000 { sum += $5; printf "%5d %s\n", $5, $9; }
           END { print "----------------"; printf "%5d %s\n", sum, "Total"; }'
   44 log
  565 prime_test.sh.gz
  476 redir.c
  692 ssh.sh
----------------
1777 Total
[color=blue]-(user@host:tty)-(tmp)-
[1066 0] $ [/color]