2011-10-07 276 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