如何+
用空格字符替换当前工作目录中所有文件名中出现的所有字符?
我知道有 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
(并且可用),与 中看到的命令相同rename
ntzrmtthihu777 的回答。
答案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 重命名的东西:)