Linux批量重命名:使用命令行给目录下所有文件添加Unix_前缀


阅读 8 次

场景需求

在日常开发中,我们经常需要对大量文件进行批量重命名操作。比如在整理服务器日志、处理上传文件或管理文档时,需要为目录下所有文件添加统一前缀"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测试