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