我想编写一个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
答案 0 :(得分:0)
Don't parse ls
- 你想要:
for entry in *
在您使用的任何地方引用"$entry"
:echo "$entry"
if
条件的语法错误:
if [[ $max1 -gt $max ]]
答案 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]
}
'