面试题答案
一键面试#!/bin/bash
file_name_array=()
file_size_array=()
while read -r line; do
filename=$(echo $line | awk '{print $1}')
filesize=$(echo $line | awk '{print $2}')
file_name_array+=("$filename")
file_size_array+=("$filesize")
done < your_file.txt
max_index=0
for ((i = 1; i < ${#file_size_array[@]}; i++)); do
if (( ${file_size_array[i]} > ${file_size_array[max_index]} )); then
max_index=$i
fi
done
echo "文件名: ${file_name_array[max_index]}, 大小: ${file_size_array[max_index]}"
在上述脚本中:
- 初始化两个空数组
file_name_array
和file_size_array
用于存储文件名和文件大小。 - 使用
while read -r line
逐行读取文本文件,通过awk
分别提取文件名和文件大小,并存储到对应的数组中。 - 通过遍历文件大小数组,找到最大文件大小对应的索引
max_index
。 - 最后输出文件名和最大文件大小。
这种方式逐行读取文件,适合处理大文件,不会占用过多内存。your_file.txt
为实际存储文件名和大小的文本文件名,需根据实际情况替换。