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

如何在Bash中移除文件名指定点?含文件夹处理方法

批量重命名文件/文件夹:将"2.0"替换为"20"

当然可以对文件夹执行同样的批量重命名操作,以下是不同操作系统下的实现方案:

一、Linux/macOS 命令行实现

1. 批量修改文件

使用Perl版本的rename(多数Debian/Ubuntu系系统默认):

rename 's/2\.0/20/' *

若系统为util-linux版本的rename(如RHEL/CentOS),使用:

rename "2.0" "20" *

2. 批量修改文件夹(递归处理)

递归查找并修改所有子目录中的文件夹名:

# Perl版本rename
find . -type d -name "*2.0*" -exec rename 's/2\.0/20/' {} \;

# util-linux版本rename
find . -type d -name "*2.0*" -exec rename "2.0" "20" {} \;

二、Windows PowerShell 实现

1. 批量修改文件

Get-ChildItem -File | Rename-Item -NewName { $_.Name -replace '2\.0', '20' }

2. 批量修改文件夹(递归处理)

Get-ChildItem -Directory -Recurse | Rename-Item -NewName { $_.Name -replace '2\.0', '20' }

三、跨平台Python脚本

如果需要更灵活的过滤或自定义逻辑,可使用Python脚本:

import os

def batch_rename(root_path, old_substr, new_substr):
    for root, dirs, files in os.walk(root_path):
        # 修改文件
        for filename in files:
            if old_substr in filename:
                os.rename(os.path.join(root, filename),
                          os.path.join(root, filename.replace(old_substr, new_substr)))
        # 修改文件夹(复制列表避免遍历冲突)
        for dirname in dirs.copy():
            if old_substr in dirname:
                old_dir = os.path.join(root, dirname)
                new_dir = os.path.join(root, dirname.replace(old_substr, new_substr))
                os.rename(old_dir, new_dir)
                # 更新目录列表,确保后续遍历新命名的文件夹
                dirs[dirs.index(dirname)] = new_dir

# 执行修改:当前目录下所有文件和文件夹
batch_rename('.', '2.0', '20')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:01:23