最简单版本
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}
转载请注明原文地址: https://lol.8miu.com/read-5541.html