![如何通过替换从 shell 脚本变量中获取的文件名中的单词来重命名多个文件?](https://linux22.com/image/597348/%E5%A6%82%E4%BD%95%E9%80%9A%E8%BF%87%E6%9B%BF%E6%8D%A2%E4%BB%8E%20shell%20%E8%84%9A%E6%9C%AC%E5%8F%98%E9%87%8F%E4%B8%AD%E8%8E%B7%E5%8F%96%E7%9A%84%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E7%9A%84%E5%8D%95%E8%AF%8D%E6%9D%A5%E9%87%8D%E5%91%BD%E5%90%8D%E5%A4%9A%E4%B8%AA%E6%96%87%E4%BB%B6%EF%BC%9F.png)
这个问题类似于这个帖子。 如何通过替换文件名中的单词来重命名多个文件?
我的例子比上面的主题更复杂。两个变量是从 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'
,以确保变量的值传递给重命名命令。