面试题答案
一键面试优化后的Bash脚本示例
#!/bin/bash
log_file="file_size_log.txt"
while IFS= read -r file_path; do
if [[ -f "$file_path" ]]; then
file_size=$(du -b "$file_path" | cut -f1)
echo "$(date): $file_path - Size: $file_size bytes" >> "$log_file"
fi
done < file_paths.txt
优化思路
- 逐行读取文件:使用
while IFS= read -r file_path
逐行读取文本文件,避免一次性加载整个文件到内存,适合处理包含大量文件路径的文本文件。 - 文件存在性检查:通过
[[ -f "$file_path" ]]
检查路径是否为文件,避免对目录或不存在的路径执行操作,减少错误。 - 使用
du -b
计算文件大小:du -b
以字节为单位输出文件大小,简单高效。 - 日志记录:将文件大小和路径记录到日志文件中,使用
date
记录操作时间,便于后续查看和分析。