替换文件名中出现的字符

替换文件名中出现的字符

如何+用空格字符替换当前工作目录中所有文件名中出现的所有字符?

我知道有 linux 命令rename,但我不确定如何使用它来执行此操作。

例子:

早期+基督徒 -> 早期基督徒

答案1

尝试:

rename -n 'y/+/ /' *

y用于将字符从一组转换为另一组。考虑来自的例子man rename:

To translate uppercase names to lower, you'd use
       rename 'y/A-Z/a-z/' *

用于-n测试表达式。一旦您对结果感到满意,就rename可以不使用它来运行以执行实际的重命名。

我应该提到的是,rename我正在谈论的是,在基于 Debian 的 Linux 发行版上perl-rename被称为prename(并且可用),与 中看到的命令相同renamentzrmtthihu777 的回答

答案2

您还可以使用mv重命名文件。将其复制并粘贴到终端或将其转换为脚本:

for f in *; do
    # check if its a file
    if [[ -f "$f" ]]; then
        new_name=$(echo "$f" | sed 's/+/ /g')
        # replace this echo with mv
        echo "$f" "$new_name"
    fi
done

如果您对结果满意,请将第二个替换echo为。mv因为它将重命名循环运行所在目录中的所有文件。

答案3

我个人喜欢使用 perl-rename 来完成此类任务。例如,我习惯将 perl-rename 's:_: :g' file_name_here所有下划线更改为空格,从而生成file name here.你可以把它想象成 sed 重命名的东西:)

相关内容