📌  相关文章
📜  重命名终端中的多个文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:58:10.956000             🧑  作者: Mango

重命名终端中的多个文件 - Shell/Bash

在终端中使用 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 命令的参数来过滤特定类型的文件。

希望上述示例对你有所帮助,你可以根据实际需求进行适当调整。在使用时,请确保对脚本文件具有执行权限。