这个问题类似于这个帖子。 如何通过替换文件名中的单词来重命名多个文件?
我的例子比上面的主题更复杂。两个变量是从 shell 脚本的其他位置获取的 $name 和 $newname。$name 和 $newname 可能有 unicode 字或特殊符号,如 []<>♫...等,所以有人能帮我提供一种在 shell scrit 中添加脚本部分的方法来解决文件名替换问题吗?
顺便说一句,我尝试输入两种命令来更改文件名的一部分,但是不起作用。
rename.ul '$name' '$newname' /home/fy6877/test/final/*
ls /home/fy6877/test/final/|xargs -I$ rename.ul '$name' '$newname' $
答案1
使用rename
或mmv
。它们都不必关心名称中是否有 UTF-8 编码的 Unicode 符号,也不必关心命令行中给出的参数是变量还是纯文字。确保将参数传递为 而"$name"
不是'$name'
,以确保变量的值传递给重命名命令。