请求编写基于前缀与文件类型归类文件的Bash脚本
照片自动归类Bash脚本方案
第一步:创建所需目录
先在照片所在目录执行这条命令,一次性创建所有需要的分类目录:
mkdir -p "HAM - REF/{RAW,JPG}" "HDR - HDRI/{RAW,JPG}" "STL - STILLS/{RAW,JPG}"
-p 参数会自动创建嵌套目录,不用手动逐层创建。
第二步:创建归类脚本
打开文本编辑器(比如系统自带的记事本、TextEdit),复制粘贴以下内容,保存为 sort_photos.sh:
#!/bin/bash # 遍历当前目录下的所有文件 for file in *; do # 只处理普通文件,跳过目录 if [ -f "$file" ]; then # 提取文件名前3个字符 prefix=${file:0:3} # 提取文件后缀并转为大写(兼容小写后缀如jpg、raw) ext=$(echo "${file##*.}" | tr '[:lower:]' '[:upper:]') # 根据前缀匹配目标目录 case $prefix in HAM) target_dir="HAM - REF/$ext" ;; HDR) target_dir="HDR - HDRI/$ext" ;; STL) target_dir="STL - STILLS/$ext" ;; # 前缀不匹配的文件直接跳过 *) continue ;; esac # 移动文件到对应目录 mv "$file" "$target_dir/" echo "已移动:$file → $target_dir" fi done
第三步:运行脚本
- 打开终端,进入存放照片和脚本的目录
- 给脚本添加执行权限:
chmod +x sort_photos.sh
- 执行脚本开始归类:
./sort_photos.sh
注意事项
- 脚本只会处理当前目录下的文件,不会递归处理子目录里的文件
- 后缀会统一转为大写,所以
ham1234.jpg会被归类到HAM - REF/JPG目录 - 前缀不是
HAM/HDR/STL的文件会被忽略,不会被移动
内容的提问来源于stack exchange,提问作者JasonWylfa
相关产品推荐
相关产品推荐

