如何使用 Linux Shell 重命名文件并删除“字符

如何使用 Linux Shell 重命名文件并删除“字符

我有许多文件名中带有双引号的文件,如下所示:

“这是一个带有引号的长文件名”.mp3

我尝试使用 Linux 命令重命名,我可以使用以下命令轻松删除下划线

rename 's/_//g' *

但是当我尝试使用 \" 时什么也没有发生(我使用 -n 来查看变化):

rename -n 's/\"//g' *

什么都没有重命名

谢谢!

答案1

您的文件名中有“智能引号”:

“Tokyo_String_Quartet-Beethoven_-Late_String_Quartets-CD1-11-Quartet”.mp3 

尝试rename使用插入的命令代替"

或者不使用,rename你可以选择sed

for f in *.mp3
    do
        new=$(echo $f | sed -E 's/[“”]//g')
        mv $f $new
    done

与所有批处理 shell 操作一样,mv最安全的方法是在原始文件夹的备份上进行测试/运行...您可以在第一次尝试时通过echo替换来进行测试。mv

答案2

在单引号内无需转义双引号。

rename -n 's/"//g' *

答案3

我能够用 Bash 这样做:

file=$(ls | grep \")
newName=$(echo $file | sed 's/\"//g')
mv $file $newName

相关内容