我想编写一个shell脚本来查找当前目录中的最小文件名(基于字符串长度)

时间:2017-02-28 20:14:44

标签: shell

我想编写一个shell脚本来查找当前目录中的最小文件名(基于字符串长度)。

#!/bin/bash

data=$(ls -trh *)
max=0;


for entry in ${data}
do
  echo ${entry}
len=${#entry}
echo ${len}
max1=${len}
echo ${max1}
echo ${max}
 if( $max1 -gt $max )
 then
 word=$entry
 max=$max1;
 fi;

done

2 个答案:

答案 0 :(得分:0)

  1. Don't parse ls - 你想要:

    for entry in *
    
  2. 在您使用的任何地方引用"$entry"echo "$entry"

  3. if条件的语法错误:

    if [[ $max1 -gt $max ]]
    
  4. http://www.shellcheck.net/

    检查您的脚本

答案 1 :(得分:0)

@forte:试试:

ls | awk '{LEN=length($0);B[LEN]=B[LEN]?B[LEN] ORS $0:$0;;MIN=MIN<LEN?(MIN?MIN:LEN):LEN} END{print B[MIN]}'

上面应该为您提供最小的名称文件,即使您有超过1个长度相同且最小的文件,它们也会全部给出。

EDIT1:现在也成功添加非单线形式的解决方案。

ls | awk '{
                LEN=length($0);
                B[LEN]=B[LEN]?B[LEN] ORS $0:$0;
                MIN=MIN<LEN?(MIN?MIN:LEN):LEN
          }
          END{
                print B[MIN]
             }
         '