MST
星途 面试题库

面试题:Bash脚本中如何优化循环以提高执行效率

在Bash脚本里,有一个需求是遍历一个包含大量文件路径的文本文件,对每个文件执行特定操作,如计算文件大小并记录到日志中。请写出优化后的Bash脚本示例,并简要说明优化思路。
45.9万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

优化后的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

优化思路

  1. 逐行读取文件:使用 while IFS= read -r file_path 逐行读取文本文件,避免一次性加载整个文件到内存,适合处理包含大量文件路径的文本文件。
  2. 文件存在性检查:通过 [[ -f "$file_path" ]] 检查路径是否为文件,避免对目录或不存在的路径执行操作,减少错误。
  3. 使用 du -b 计算文件大小du -b 以字节为单位输出文件大小,简单高效。
  4. 日志记录:将文件大小和路径记录到日志文件中,使用 date 记录操作时间,便于后续查看和分析。