You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash命令按前缀数字将文件夹内文件移入子文件夹?

按数字前缀批量移动JPG文件到对应子文件夹的Bash方案

一步到位的命令脚本

先切换到你的images目录(替换成实际路径):

cd /path/to/your/images

然后执行以下循环命令:

for file in [0-9]*.jpg; do
    # 提取文件名开头的连续数字前缀
    prefix=${file%%[^0-9]*}
    # 创建目标子文件夹(已存在则无操作)
    mkdir -p "images_$prefix"
    # 移动文件到对应文件夹
    mv "$file" "images_$prefix/"
done

关键部分解释

  • [0-9]*.jpg:仅匹配以数字开头的JPG文件,过滤掉不符合命名规则的文件,避免误操作
  • ${file%%[^0-9]*}:Bash参数扩展语法,从文件名末尾截断第一个非数字字符及之后的内容,精准提取开头的连续数字前缀。例如456_photo.jpg会提取出456,7_pic.jpg会提取出7
  • mkdir -p:-p参数确保文件夹不存在时自动创建,若已存在则不会抛出错误,避免中断循环
  • 双引号包裹文件名:防止文件名包含空格、特殊字符时出现解析错误

测试建议(安全起见)

如果不确定命令效果,可以先替换mv为echo mv,这样只会打印将要执行的移动操作,不会实际移动文件:

for file in [0-9]*.jpg; do
    prefix=${file%%[^0-9]*}
    mkdir -p "images_$prefix"
    echo mv "$file" "images_$prefix/"
done

确认输出的移动命令符合预期后,再去掉echo执行实际移动。

内容的提问来源于stack exchange,提问作者Alex Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 00:15:35