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

Linux服务器下将子文件夹文件移至主文件夹并处理重名文件

Linux图片文件整理脚本:合并子文件夹图片并自动重命名重复文件

下面是一个可直接使用的bash脚本,实现将photo_folder子目录中的图片移动到主目录,并自动对重名文件进行重命名:

#!/bin/bash

# 替换为你的photo_folder实际路径
PHOTO_FOLDER="/path/to/photo_folder"

# 需要处理的图片格式,可按需增减
IMAGE_EXTENSIONS=("jpg" "jpeg" "png" "gif" "bmp")

# 遍历所有子文件夹
for SUBFOLDER in "$PHOTO_FOLDER"/*/; do
    [ -d "$SUBFOLDER" ] || continue

    # 遍历每种图片格式的文件
    for EXT in "${IMAGE_EXTENSIONS[@]}"; do
        for FILE in "$SUBFOLDER"/*."$EXT"; do
            [ -f "$FILE" ] || continue

            # 拆分文件名和扩展名
            FILENAME=$(basename "$FILE")
            NAME="${FILENAME%.*}"
            FILE_EXT="${FILENAME##*.}"

            # 初始化目标路径
            DEST="$PHOTO_FOLDER/$FILENAME"
            COUNT=1

            # 若目标文件已存在,生成新文件名
            while [ -f "$DEST" ]; do
                DEST="$PHOTO_FOLDER/${NAME}_${COUNT}.$FILE_EXT"
                COUNT=$((COUNT + 1))
            done

            # 移动文件并显示过程
            mv -v "$FILE" "$DEST"
        done
    done

    # 移除空的子文件夹(不需要可注释此行)
    rmdir --ignore-fail-on-non-empty "$SUBFOLDER"
done

echo "图片整理完成!"

关键说明

  • 路径配置:把PHOTO_FOLDER的值替换为你的图片主文件夹绝对路径,比如/home/ben/photos
  • 格式支持:IMAGE_EXTENSIONS数组里可以添加或删除需要处理的图片格式,覆盖常见的图片类型
  • 重命名规则:如果主目录已存在同名文件,会自动在文件名后添加_数字后缀(比如1.jpg→1_1.jpg→1_2.jpg),确保不会覆盖原有文件
  • 子文件夹清理:脚本最后会自动删除空的子文件夹,如果子文件夹还有非图片文件,会保留不删除
  • 安全提示:建议先在测试文件夹中运行脚本,确认效果符合预期后再处理真实数据

使用步骤

  1. 将脚本保存为organize_photos.sh
  2. 赋予执行权限:chmod +x organize_photos.sh
  3. 运行脚本:./organize_photos.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:35:35