面试题答案
一键面试#!/bin/bash
# 定义递归函数
traverse_directory() {
local dir=$1
local file_count=0
for item in "$dir"/*; do
if [ -d "$item" ]; then
echo "Directory: $item, File count: $(traverse_directory "$item")"
elif [ -f "$item" ]; then
local line_count=$(wc -l < "$item")
echo "File: $item, Line count: $line_count"
((file_count++))
fi
done
echo $file_count
}
# 调用函数,传入起始目录
traverse_directory /path/to/your/directory
关键思路:
- 参数接收:函数
traverse_directory
接收一个目录路径作为参数。 - 循环遍历:使用
for
循环遍历传入目录中的所有项目。 - 判断项目类型:通过
[ -d "$item" ]
判断是否为目录,若是则递归调用函数处理该子目录,并输出目录名及其中文件总数;通过[ -f "$item" ]
判断是否为普通文件,若是则使用wc -l
计算行数并输出文件名和行数。 - 文件计数:在处理文件时,对文件数量进行计数,当处理完一个目录下所有内容后返回该目录下的文件总数。