最简单版本
max_len=0
max_str=''
for i in `cat $1 | tr -s -c "a-zA-Z" " "`; do
len=${#i}
if [[ ${len} -gt ${max_len} ]];then
max_len=${len}
max_str=${i}
fi
done
echo $max_len $max_str
加了对目录的递归检索+过滤黑名单中的文件类型
filter_types=(mp4 gz avi tar)
function filter(){
temp=`basename ${1} | rev | cut -d "." -f 1 | rev `
for i in ${filter_types[@]};do
if [[ i -eq temp ]];then
echo "Filters on!"
echo "${1} is filtered."
return 1;
fi
done
}
function find_max_in_file(){
echo "Using func find_in_file"
filter ${1}
if [[ $? -eq 1 ]];then
return
fi
words=`cat $1 | tr -s -c "a-zA-Z" "\n"`
echo ${words}
for i in ${words};do
len_t=`echo -n ${#i}`
if [[ ${len_t} -gt ${max_len} ]];then
max_len=${len_t}
max_str=${i}
max_file=${1}
fi
done
}
function find_max_in_dir(){
echo "Using func find_in_dir"
for i in `ls -A $1`;do
if [[ -d ${1}/${i} ]];then
echo "${1}/${i} is a dir"
find_max_in_dir ${1}/${i}
else
echo "${1}/${i} is a file"
find_max_in_file ${1}/${i}
fi
done
}
max_file=""
max_str=""
max_len=""
source find_max1.sh
if [[ $
find_max_in_dir " "
else
for i in $@;do
echo "Start searching...\n"
if [[ -d $i ]];then
find_max_in_dir $i
else
find_max_in_file $i
fi
done
fi
printf "Max_str : %s\nMax_len : %s\nMax_file : %s\n" ${max_str} ${max_len} ${max_file}