Bash-重命名部分文件名

Bash-重命名部分文件名,bash,filenames,rename,Bash,Filenames,Rename,我需要一些关于我的小脚本的帮助,以修复带有ISO_8859-1和/或部分名称(如“ó” 剧本就在那里: 昨天有了3件事,正在工作,我加了更多,不再工作了,我不明白为什么 看,如果我在“Bash Shell”/“Gnome终端”中使用该命令,比如: 例如,我需要将文件名“°”的一部分更改为“ª” 某人/某人,可以解释为什么会出现此错误,以及如何修复它 我不想要交互模式,也不想要替换“扩展名”,我想要“重命名”文件名中不好的部分,用“好”字符代替:D 谢谢您的自述,也很抱歉我

我需要一些关于我的小脚本的帮助,以修复带有ISO_8859-1和/或部分名称(如
“ó”

剧本就在那里:

昨天有了3件事,正在工作,我加了更多,不再工作了,我不明白为什么

看,如果我在“Bash Shell”/“Gnome终端”中使用该命令,比如:

例如,我需要将文件名“°”的一部分更改为“ª” 某人/某人,可以解释为什么会出现此错误,以及如何修复它

我不想要交互模式,也不想要替换“扩展名”,我想要“重命名”文件名中不好的部分,用“好”字符代替:D


谢谢您的自述,也很抱歉我的英语不好,谢谢您对我的帮助。您可以使用此脚本给我提供帮助吗

您没有引用$orig和$dest,并且当文件名包含空格时会导致问题(mv将文件名作为几个单独的参数提供(这就是为什么它会打印带有部分文件名的错误消息))。尝试使用

mv "$orig" "$dest"

相反。

for循环使用空格作为分隔符。由于文件名包含空格,因此需要更改用作分隔符的内容

下面是使用
find
while

find . -maxdepth 1 -name "*${expresion}*" -print0 | while read -d $'\0' file
do
    orig="$file"
    dest=$(echo "$file" | sed -e "s/${expresion}/${sustituto}/")
    mv "$orig" "$dest"
done
但是,更好的解决方案可能是使用
rename
命令:

rename $expresion $sustituto *${expresion}*
命令可用吗

rename  $expresion $sustituto *$expresion*

谢谢你的建议。但我不知道“重命名”是否在所有发行版中都可用,就像“mv”迷你脚本完成一样,我希望这对任何linux用户和任何linux发行版都有效。您可以在>>>中看到所有代码。“”循环驱动程序也错误-您想要在*$expresion*中为i添加
;执行…
rename  $expresion $sustituto *$expresion*