如何通过替换从 shell 脚本变量中获取的文件名中的单词来重命名多个文件?

如何通过替换从 shell 脚本变量中获取的文件名中的单词来重命名多个文件?

这个问题类似于这个帖子。 如何通过替换文件名中的单词来重命名多个文件?

我的例子比上面的主题更复杂。两个变量是从 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

使用renamemmv。它们都不必关心名称中是否有 UTF-8 编码的 Unicode 符号,也不必关心命令行中给出的参数是变量还是纯文字。确保将参数传递为 而"$name"不是'$name',以确保变量的值传递给重命名命令。

相关内容