如何在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
相关产品推荐
相关产品推荐

