📅  最后修改于: 2023-12-03 14:58:10.956000             🧑  作者: Mango
在终端中使用 Shell 或 Bash 脚本重命名多个文件是非常方便的。使用 Shell/Bash 脚本,我们可以执行批处理任务,从而简化文件重命名的过程。
下面是一个示例脚本,它使用 Shell/Bash 语法来实现文件重命名的功能。该脚本涵盖了文件的批量重命名、使用正则表达式匹配文件、遍历目录等常见需求。
以下是一个名为 rename_files.sh
的 Shell/Bash 脚本示例,用于批量重命名文件:
#!/bin/bash
# 设置重命名规则,这里将文件名中的空格替换为下划线
rename_rule='s/ /_/g'
# 遍历当前目录下的所有文件
for file in *
do
# 判断是否为文件
if [ -f "$file" ]
then
# 对文件名应用重命名规则
new_name=$(echo "$file" | sed "$rename_rule")
# 如果文件名有变化,则进行重命名
if [ "$file" != "$new_name" ]
then
mv "$file" "$new_name"
echo "重命名文件:$file -> $new_name"
fi
fi
done
上述脚本通过遍历当前目录下的所有文件,并将文件名中的空格替换为下划线。你可以根据自己的需求修改 rename_rule
来实现不同的重命名规则。
如果你想通过正则表达式匹配文件名来实现重命名,可以稍作修改,如下所示:
#!/bin/bash
# 设置匹配规则,这里将匹配以数字开头的文件名
match_rule='^[0-9]+'
# 遍历当前目录下的所有文件
for file in *
do
# 判断是否为文件
if [ -f "$file" ]
then
# 判断文件名是否满足匹配规则
if [[ "$file" =~ $match_rule ]]
then
# 在文件名前添加前缀
new_name="prefix_$file"
mv "$file" "$new_name"
echo "重命名文件:$file -> $new_name"
fi
fi
done
上述脚本通过设置匹配规则,仅对以数字开头的文件名进行重命名,并在文件名前添加了前缀。
如果你需要遍历子目录并重命名文件,可以使用 find
命令结合上述脚本来实现。以下是一个示例脚本,用于遍历当前目录及其子目录,并将文件名中的空格替换为下划线:
#!/bin/bash
# 设置重命名规则,这里将文件名中的空格替换为下划线
rename_rule='s/ /_/g'
# 遍历当前目录及其子目录下的所有文件
find . -type f -print0 | while IFS= read -r -d '' file
do
# 对文件名应用重命名规则
new_name=$(echo "$file" | sed "$rename_rule")
# 如果文件名有变化,则进行重命名
if [ "$file" != "$new_name" ]
then
mv "$file" "$new_name"
echo "重命名文件:$file -> $new_name"
fi
done
此脚本使用 find
命令来遍历当前目录及其子目录下的所有文件。根据你的需要,你可以修改 find
命令的参数来过滤特定类型的文件。
希望上述示例对你有所帮助,你可以根据实际需求进行适当调整。在使用时,请确保对脚本文件具有执行权限。