2013-08-28 158 views
1

我有一个小的bash脚本,用于下载和重命名文件。问题在于bash无法理解的一些乱码而不是标准字符。无法重命名文件名

例如:

�������� ���� ���'�-2.jpg 

我的bash

while read line; do 
if [ ! -z "$line" ]; then 
    NEW_FILENAME=$(echo "$line" | uniconv -encode Russian-Translit | uniconv -encode Latin | tr -d '\[\]\!\@\#\$\%\^\&\*\(\)\?\'') 
    mv "$line" "$NEW_FILENAME" 
fi 
done <<< "$FILES_TO_CONVERT" 
+0

不工作?尝试在读取命令中添加-r选项:'read -r line'。 – konsolebox

+1

你是说'$ FILES_TO_CONVERT'中的某些文件名是乱码,或者脚本产生了一些乱码文件名? – lurker

+0

某些文件名是乱码 – user2696962

回答

0

你为什么不删除这些文字的东西,如:
sed 's/[^a-zA-Z0-9_\.-]//g'