bash 将一个目录中所有文件去掉特定前缀字符串后重命名

bash 批量去除文件特定前缀重命名

方法 1:使用 for 循环 + mv

# 去掉 "1748503426505_31840" 前缀
prefix="1748503426505_31840"
for file in "$prefix"*; do
    mv "$file" "${file#$prefix}"
done

‌方法 2:处理子目录

prefix="特定前缀"
find . -type f -name "$prefix*" | while read -r file; do
    dir=$(dirname "$file")
    base=$(basename "$file")
    mv "$file" "$dir/${base#$prefix}"
done

find . -type f -name “$prefix*” 查找所有匹配的文件

<think> 我们需要遍历指定文件夹中的所有图片文件,然后对每个图片文件重命名,添加一个前缀。 注意:我们应该只针对图片文件(例如:.jpg, .jpeg, .png, .gif等)进行操作。 步骤: 1. 指定文件夹路径和前缀字符串。 2. 遍历文件夹中的所有文件。 3. 检查文件扩展名是否为图片格式。 4. 对符合条件的文件进行重命名,添加前缀。 以下代码使用Python的os模块来实现。 </think> 以下是一个Python脚本,用于给文件夹中的所有图片添加前缀名。该脚本支持常见的图片格式,并会递归处理子文件夹(可选): ```python import os import argparse def add_prefix_to_images(folder_path, prefix, recursive=False): """ 给文件夹中的所有图片添加前缀名 参数: folder_path (str): 图片文件夹路径 prefix (str): 要添加的前缀 recursive (bool): 是否递归处理子文件夹,默认为False """ # 支持的图片格式列表 image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'] # 计数器 renamed_count = 0 # 遍历文件夹 for root, dirs, files in os.walk(folder_path): for filename in files: # 检查是否为图片文件 if any(filename.lower().endswith(ext) for ext in image_extensions): # 原文件的完整路径 old_path = os.path.join(root, filename) # 新文件名(添加前缀) new_filename = prefix + filename new_path = os.path.join(root, new_filename) try: # 重命名文件 os.rename(old_path, new_path) renamed_count += 1 print(f"重命名成功: {filename} -> {new_filename}") except Exception as e: print(f"重命名失败 {filename}: {str(e)}") # 如果不递归处理子文件夹,则退出循环 if not recursive: break print(f"\n操作完成! 共重命名了 {renamed_count} 个图片文件") if __name__ == "__main__": # 设置命令行参数 parser = argparse.ArgumentParser(description='给文件夹中的图片添加前缀') parser.add_argument('folder', help='图片文件夹路径') parser.add_argument('prefix', help='要添加的前缀') parser.add_argument('-r', '--recursive', action='store_true', help='递归处理子文件夹') args = parser.parse_args() # 检查文件夹是否存在 if not os.path.isdir(args.folder): print(f"错误: 文件夹 '{args.folder}' 不存在") exit(1) # 执行重命名操作 add_prefix_to_images(args.folder, args.prefix, args.recursive) ``` ### 代码说明 1. **支持的图片格式**: ```python image_extensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.tiff', '.webp'] ``` 包含常见图片格式,不区分大小写 2. **递归处理选项**: ```python for root, dirs, files in os.walk(folder_path): # ... if not recursive: break ``` - 默认只处理指定文件夹 - 添加 `-r` 参数可递归处理所有子文件夹 3. **安全重命名**: ```python os.rename(old_path, new_path) ``` 使用操作系统原生的重命名功能,效率高且安全 4. **错误处理**: ```python try: os.rename(old_path, new_path) except Exception as e: print(f"重命名失败 {filename}: {str(e)}") ``` 捕获可能的错误(如文件正在使用、权限不足等) ### 使用方法 1. **基本用法**(当前目录): ```bash python rename_images.py /path/to/images "prefix_" ``` 2. **递归处理子文件夹**: ```bash python rename_images.py /path/to/images "prefix_" -r ``` 3. **示例效果**: ``` 原文件名: cat.jpg 添加前缀后: prefix_cat.jpg 原文件名: flower.png 添加前缀后: prefix_flower.png ``` ### 注意事项 1. **备份重要文件**:执行前建议备份,以防意外 2. **文件名冲突**:如果新文件名已存在,会覆盖现有文件 3. **隐藏文件**:脚本会跳过以`.`开头的隐藏文件 4. **特殊字符**:确保前缀不含文件系统禁止的字符(如`/`, `\`, `:`, `*`, `?`, `"`, `<`, `>`, `|`) ### 替代方案(Windows用户) Windows用户可以使用PowerShell命令批量重命名: ```powershell Get-ChildItem -Path "C:\path\to\images" -Include *.jpg, *.png, *.jpeg | Rename-Item -NewName {"prefix_" + $_.Name} ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值