Bash Shell中按规则将文件移动到对应目录的循环脚本编写求助
Bash批量移动文件脚本方案
脚本实现
先切换到目标工作目录,再执行以下循环脚本:
cd /test for file in mm??????????_Pool_*_text.csv; do # 从文件名中提取Pool_N格式的目录名 pool_dir=$(echo "$file" | grep -o 'Pool_[0-9]*') # 拼接完整目标目录路径 target_dir="/this/that/$pool_dir" # 创建目录(不存在则自动创建,已存在则无操作) mkdir -p "$target_dir" # 将文件移动到对应目录 mv "$file" "$target_dir/" done
关键细节说明
mm??????????_Pool_*_text.csv:用??????????匹配10位编码前缀,精准筛选符合命名规则的文件grep -o 'Pool_[0-9]*':从文件名中提取出Pool_N字符串,作为目标目录的核心标识mkdir -p:-p参数会自动创建不存在的上级目录,避免因目录缺失导致移动失败- 所有变量用双引号包裹,避免文件名含空格时出现异常
安全测试建议
正式执行前,可把mv替换成echo mv,脚本会打印出待执行的移动命令,确认路径无误后再改回mv,防止误操作。
内容的提问来源于stack exchange,提问作者User15Vim
相关产品推荐
相关产品推荐

