使用Bash自动整理CSV文件:按Cell分类归档的技术需求
Bash脚本自动整理CSV文件:按Cell分类并归档Summary文件
没问题,我来帮你写一个简洁的Bash脚本,完美匹配你的需求。先直接上可用的脚本,再一步步拆解说明细节:
#!/bin/bash # 指定CSV文件所在的文件夹,可根据实际路径修改 CSV_DIR="./CSV文件夹" # 遍历指定目录下的所有CSV文件 for file in "$CSV_DIR"/*.csv; do # 跳过目录下无CSV文件时的通配符占位符 [ -e "$file" ] || continue # 提取纯文件名(去掉路径部分) filename=$(basename "$file") # 从文件名中提取Cell标识(匹配Cell开头+数字的格式) if [[ $filename =~ Cell[0-9]+ ]]; then cell=${BASH_REMATCH[0]} else # 遇到不符合命名规则的文件,跳过并提示 echo "跳过不符合命名规则的文件:$filename" continue fi # 创建Cell目录及对应的Summary子目录(-p确保父目录不存在时自动创建,避免报错) cell_dir="$CSV_DIR/$cell" summary_dir="$cell_dir/Summary" mkdir -p "$summary_dir" # 根据文件名后缀,将文件移动到对应目录 if [[ $filename == *_summary.csv ]]; then mv "$file" "$summary_dir/" echo "已移动:$filename -> $summary_dir/" else mv "$file" "$cell_dir/" echo "已移动:$filename -> $cell_dir/" fi done echo "CSV文件整理完成!"
关键逻辑说明
- 指定目标文件夹:修改
CSV_DIR变量为你的实际路径(比如/home/yourname/data/CSV文件夹),脚本会自动处理该目录下的所有CSV文件 - 安全遍历文件:
[ -e "$file" ] || continue可以避免目录下没有CSV文件时,脚本误处理通配符字符串本身 - 精准提取Cell名称:用Bash原生正则匹配
Cell[0-9]+,能准确抓取Cell1、Cell8甚至Cell10这类标识,比简单的字符串切割更可靠 - 自动创建目录:
mkdir -p会递归创建所需目录,即使Cell目录或Summary子目录已经存在也不会报错 - 分类移动文件:通过判断文件名是否包含
_summary.csv后缀,将文件分别归档到Summary子目录或Cell根目录
使用步骤
- 将上述代码保存为
organize_csv.sh文件 - 给脚本添加执行权限:
chmod +x organize_csv.sh - 运行脚本:
./organize_csv.sh
可选调整
- 如果需要保留原文件(而不是移动),可以把脚本中的
mv命令改成cp - 如果你的Cell命名规则包含字母(比如
CellA1),可以把正则表达式改成Cell[a-zA-Z0-9]+来适配
内容的提问来源于stack exchange,提问作者Sparky_47
相关产品推荐
相关产品推荐

