嗨,我是 Unix 和 bash 的新手,我想问一下 q。我怎样才能做到这一点
指定的目录作为参数给出。找到常规文件总行数最大的目录。浏览所有特定目录及其子目录。数量仅适用于直接位于目录中的文件。
我尝试了一些东西,但它不能正常工作。
while [ $# -ne 0 ];
do case "$1" in
-h) show_help ;;
-*) echo "Error: Wrong arguments" 1>&2 exit 1 ;;
*) directories=("$@") break ;;
esac
shift
done
IFS='
'
amount=0
for direct in "${directories[@]}"; do
for subdirect in `find $direct -type d `; do
temp=`find "$subdirect" -type f -exec cat {} \; | wc -l | tr -s " "`
if [ $amount -lt $temp ]; then
amount=$temp
subdirect2=$subdirect
fi
done
echo Output: "'"$subdirect2$amount"'"
done
当我将此目录用作参数时,问题就在这里。(只是示例)
/home/usr/first and there are this direct.
/home/usr/first/tmp/first.txt (50 lines)
/home/usr/first/tmp/second.txt (30 lines)
/home/usr/first/tmp1/one.txt (20 lines)
它会给我输出/home/usr/first/tmp1 100
,这是错误的,应该是/home/usr/first/tmp 80
我想深入扫描所有目录及其所有子目录。此外,如果多个目录符合最大值,则应列出所有目录。