Bash 语言 批量重命名目录下子文件

Bash阿木 发布于 2025-06-13 8 次阅读


Bash脚本批量重命名目录下子文件技术详解

在Linux系统中,文件和目录的重命名是日常操作中常见的需求。对于大量的文件或目录,手动重命名不仅效率低下,而且容易出错。Bash脚本作为一种强大的命令行工具,可以自动化完成这一任务。本文将围绕Bash语言,详细介绍如何编写脚本批量重命名目录下的子文件。

文件重命名的基本原理

在Bash中,可以使用`mv`命令来重命名文件或目录。`mv`命令的基本语法如下:

bash
mv [源文件或目录] [目标文件或目录]

如果目标文件或目录已存在,`mv`命令会覆盖它。如果源文件或目录不存在,`mv`命令会报错。

编写批量重命名脚本

1. 确定重命名规则

在编写脚本之前,首先需要确定重命名规则。以下是一些常见的重命名规则:

- 添加前缀或后缀
- 修改文件名中的特定字符
- 根据文件名排序
- 使用数字序列

2. 编写脚本

以下是一个简单的Bash脚本示例,用于将指定目录下的所有文件名添加前缀“prefix_”:

bash
!/bin/bash

指定目录
directory="/path/to/directory"

遍历目录中的所有文件
for file in "$directory"/; do
获取文件名
filename=$(basename "$file")

构造新的文件名
new_filename="prefix_${filename}"

重命名文件
mv "$file" "$directory/$new_filename"
done

3. 脚本解释

- `!/bin/bash`:指定脚本的解释器为Bash。
- `directory="/path/to/directory"`:定义要重命名文件的目录路径。
- `for file in "$directory"/; do ... done`:遍历指定目录下的所有文件。
- `filename=$(basename "$file")`:获取当前文件的文件名。
- `new_filename="prefix_${filename}"`:构造新的文件名,添加前缀“prefix_”。
- `mv "$file" "$directory/$new_filename"`:重命名文件。

复杂重命名规则

1. 修改文件名中的特定字符

以下脚本将所有文件名中的“old”替换为“new”:

bash
!/bin/bash

指定目录
directory="/path/to/directory"

遍历目录中的所有文件
for file in "$directory"/; do
获取文件名
filename=$(basename "$file")

替换文件名中的特定字符
new_filename="${filename//old/new}"

重命名文件
mv "$file" "$directory/$new_filename"
done

2. 根据文件名排序

以下脚本将目录中的文件按照文件名排序后重命名:

bash
!/bin/bash

指定目录
directory="/path/to/directory"

获取目录中的所有文件,并排序
sorted_files=$(ls -1 "$directory")

遍历排序后的文件
for ((i=1; i<=${sorted_files[@]}; i++)); do
获取当前文件
file="${sorted_files[$i-1]}"

构造新的文件名,添加序号
new_filename="${i}_${file}"

重命名文件
mv "$directory/$file" "$directory/$new_filename"
done

3. 使用数字序列

以下脚本将目录中的文件按照数字序列重命名:

bash
!/bin/bash

指定目录
directory="/path/to/directory"

初始化计数器
counter=1

遍历目录中的所有文件
for file in "$directory"/; do
获取文件名
filename=$(basename "$file")

构造新的文件名,添加数字序列
new_filename="${counter}_${filename}"

重命名文件
mv "$file" "$directory/$new_filename"

更新计数器
((counter++))
done

总结

本文介绍了使用Bash脚本批量重命名目录下子文件的方法。通过编写简单的脚本,可以轻松实现添加前缀、替换字符、排序和数字序列等重命名规则。在实际应用中,可以根据需求调整脚本,以满足不同的重命名需求。掌握Bash脚本批量重命名技术,将大大提高工作效率。