2011-10-07 176 views
0

的一部分,我需要一些帮助,我的迷你脚本,修复,西班牙语文件名以ISO_8859-1和/或与像"&#00243"击 - 重命名文件名

脚本它有名称的一部分:http://www.pastebin.com/vT5Z2BqE

昨天有三件事情,在工作,我增加更多,并且不工作了,我不明白为什么。

看,如果我在 “的Bash shell”/ “Gnome终端” 像使用命令:

[email protected]:~$ cd Filenames_to_fix 
[email protected]:~/Filenames_to_fix$ 
[email protected]:~/Filenames_to_fix$ expresion='&#00176' 
[email protected]:~/Filenames_to_fix$ sustituto='°' 
[email protected]:~/Filenames_to_fix$ ls *$expresion* 
01 - La Espada del Augurio &#00176.avi 

[email protected]:~/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 

我需要的部分文件名,变 “&#00176” 为 “ª” ,例如 有人/人,可以解释为什么这个错误,以及如何解决它???

我不想交互模式,并且不要想取代“扩展”我想“重命名”文件名的坏的部分,在其位“好”字:d。

感谢您的自述,和对不起我的英语不好,谢谢你的帮忙你能不能给我这个剧本

回答

1

你不报价$原稿和$蒸馏水和当文件名包含空格引起的问题( mv被赋予文件名作为几个单独的参数(这就是为什么它打印几个错误消息与部分文件名))。尝试使用

mv "$orig" "$dest" 

改为。

+0

此外,循环驱动程序是错误的 - 你想'为我in * $ expresion *;做...' – tripleee

0

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

下面是对应的使用findwhile

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}* 
+0

谢谢!这是工作:=) – inukaze

0

是在rename命令可用?

rename $expresion $sustituto *$expresion* 
+0

谢谢你的建议。但我不,知道在所有发行版,如果“重命名”,它可像“MV” – inukaze

+0

迷你脚本它结束了,我希望这个作品,对于任何Linux用户,与任何Linux发行版。您可以在>>“http://pastebin.com/vT5Z2BqE”<<中看到所有代码 – inukaze