如何编写Bash脚本遍历数字文件夹查找并重命名移动file.sum?
实现需求的Bash脚本方案
没问题,这就给你写一个满足需求的Bash脚本,每一步都加了注释,也会在后面拆解关键逻辑:
#!/bin/bash # 先确保目标目录~/summary存在,不存在就创建 TARGET_DIR="$HOME/summary" mkdir -p "$TARGET_DIR" # 遍历001到365的三位数字文件夹 for i in $(seq -w 1 365); do # 定义当前文件夹路径 FOLDER="$i" # 检查该文件夹是否存在,并且里面有file.sum文件 if [ -d "$FOLDER" ] && [ -f "$FOLDER/file.sum" ]; then # 定义新的文件名:文件夹名.file.sum NEW_FILENAME="${FOLDER}.file.sum" # 重命名并移动文件到目标目录 mv "$FOLDER/file.sum" "${TARGET_DIR}/${NEW_FILENAME}" echo "处理完成:$FOLDER/file.sum -> ${TARGET_DIR}/${NEW_FILENAME}" fi done echo "所有符合条件的文件处理完毕!"
关键逻辑拆解:
mkdir -p "$TARGET_DIR":-p参数确保如果~/summary目录不存在就创建它,避免后续移动文件时因为目录不存在报错。seq -w 1 365:seq用来生成1到365的序列,-w参数会自动补前导零,生成001、002...365这样的三位数字格式,正好匹配文件夹命名。[ -d "$FOLDER" ] && [ -f "$FOLDER/file.sum" ]:先检查当前三位数字命名的文件夹是否存在,再检查里面是否有file.sum文件,只有两个条件都满足才会执行后续操作,避免不存在的文件夹或文件导致错误。mv "$FOLDER/file.sum" "${TARGET_DIR}/${NEW_FILENAME}":一步完成重命名和移动操作,比先重命名再移动更高效,也避免中间状态的问题。
使用的时候,把脚本保存为process_sum_files.sh,然后给它加执行权限:chmod +x process_sum_files.sh,在存放001-365文件夹的目录下运行即可。
内容的提问来源于stack exchange,提问作者Hnux
相关产品推荐
相关产品推荐

