Linux技巧:如何按文件名首字符将所有文件移动到对应子文件夹?
批量整理文件到对应首字母/数字文件夹
解决方案脚本
直接在目标文件夹下执行以下bash命令即可:
for file in *; do # 仅处理文件,跳过子目录 [ -f "$file" ] || continue # 提取文件名首字符 first_char="${file:0:1}" # 判断首字符类型并确定目标文件夹 if [[ "$first_char" =~ [0-9] ]]; then dir="#" else # 将小写字母转为大写 dir=$(tr '[:lower:]' '[:upper:]' <<< "$first_char") fi # 创建目标文件夹(已存在则不报错) mkdir -p "$dir" # 移动文件到目标文件夹(如需避免覆盖,添加-n参数:mv -n "$file" "$dir/") mv "$file" "$dir/" done
脚本说明
for file in *:遍历当前目录下的所有条目[ -f "$file" ] || continue:过滤掉子目录,只处理普通文件${file:0:1}:截取文件名的第一个字符[[ "$first_char" =~ [0-9] ]]:正则匹配判断首字符是否为数字tr '[:lower:]' '[:upper:]':将小写首字母转换为大写,确保文件夹命名统一mkdir -p "$dir":-p参数保证文件夹不存在时创建,已存在时不抛出错误mv "$file" "$dir/":完成文件移动,添加-n参数可防止覆盖已有同名文件
复用方法
- 将上述脚本保存为
organize_files.sh - 赋予执行权限:
chmod +x organize_files.sh - 切换到需要整理的文件夹:
cd /path/to/target/folder - 执行脚本:
./organize_files.sh
内容的提问来源于stack exchange,提问作者JonB
相关产品推荐
相关产品推荐

