我需要一些帮助,我的迷你脚本,修复,西班牙文件名与ISO_8859-1和/或部分名称,如"ó"
脚本在那里:http://www.pastebin.com/vT5Z2BqE
昨天有3件事,正在工作,我添加更多,不再工作了,我不明白为什么。
看,如果我在“Bash Shell”/“Gnome-Terminal”中使用该命令,如:
inukaze@Inukaze:~$ cd Filenames_to_fix
inukaze@Inukaze:~/Filenames_to_fix$
inukaze@Inukaze:~/Filenames_to_fix$ expresion='°'
inukaze@Inukaze:~/Filenames_to_fix$ sustituto='°'
inukaze@Inukaze:~/Filenames_to_fix$ ls *$expresion*
01 - La Espada del Augurio °.avi
inukaze@Inukaze:~/Filenames_to_fix$ for i in $( ls $expresion ); do
> orig=$i
> dest=$(echo $i | sed -e "s/$expresion/$sustituto/")
> mv $orig $dest
> done
mv: no se puede efectuar stat' sobre «01»: No existe el fichero o el directorio
mv: no se puede efectuarstat' sobre «-»: No existe el fichero o el directorio
mv: no se puede efectuar stat' sobre «La»: No existe el fichero o el directorio
mv: no se puede efectuarstat' sobre «Espada»: No existe el fichero o el directorio
mv: no se puede efectuar stat' sobre «del»: No existe el fichero o el directorio
mv: no se puede efectuarstat' sobre «Augurio»: No existe el fichero o el directorio
mv: no se puede efectuar `stat' sobre «°»: No existe el fichero o el directorio
我需要,例如,为“ª”更改文件名“°”的一部分 某人/某人,可以解释为什么会出现这个错误,以及如何修复它?
我不想要交互模式,并且不想取代“扩展”我想“重命名”文件名的坏部分,其中有“好”字符:D。
谢谢你自述,对不起我的英文不好,谢谢你的任何帮助,你能不能给我这个剧本
答案 0 :(得分:1)
你没有引用$ orig和$ dest,并且当文件名包含空格时会导致问题(mv被赋予文件名作为几个单独的参数(这就是为什么它会打印几个带有部分文件名的错误消息))。尝试使用
mv "$orig" "$dest"
代替。
答案 1 :(得分:0)
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}*
答案 2 :(得分:0)
rename
命令是否可用?
rename $expresion $sustituto *$expresion*