场景需求
在日常开发中,我们经常需要对大量文件进行批量重命名操作。比如在整理服务器日志、处理上传文件或管理文档时,需要为目录下所有文件添加统一前缀"Unix_",这在Linux系统运维和自动化脚本编写中尤为常见。
Bash脚本解决方案
最直接的方法是使用bash的for循环结合mv命令:
#!/bin/bash
for file in *
do
mv "$file" "Unix_$file"
done
使用rename命令更高效
对于更专业的场景,Linux系统自带的rename命令更加高效:
rename 's/^/Unix_/' *
处理特殊文件名
当文件名包含空格或特殊字符时,需要特别注意:
find . -maxdepth 1 -type f -exec bash -c 'mv "$0" "Unix_${0#./}"' {} \;
Python实现方案
对于需要跨平台或更复杂逻辑的场景,可以使用Python脚本:
import os
folder_path = '/path/to/folder'
prefix = 'Unix_'
for filename in os.listdir(folder_path):
if os.path.isfile(os.path.join(folder_path, filename)):
new_name = prefix + filename
os.rename(
os.path.join(folder_path, filename),
os.path.join(folder_path, new_name)
)
实际应用案例
假设我们有以下文件结构:
log1.txt error.log data_2023.csv
执行rename命令后变为:
Unix_log1.txt Unix_error.log Unix_data_2023.csv
注意事项
- 操作前建议先备份重要文件
- 确保有目录的写权限
- 隐藏文件(以.开头的)默认不会被处理
- 批量操作前可以先使用echo测试