Linux Can';不要重命名文件名

Linux Can';不要重命名文件名,linux,bash,character-encoding,rename,mv,Linux,Bash,Character Encoding,Rename,Mv,我有一个小bash脚本,可以下载和重命名文件。问题在于bash无法理解的一些乱七八糟的非标准字符 例如: �������� ���� ���'�-2.jpg 我的狂欢 while read line; do if [ ! -z "$line" ]; then NEW_FILENAME=$(echo "$line" | uniconv -encode Russian-Translit | uniconv -encode Latin | tr -d '\[\]\!\@\#\$\%\^\&a

我有一个小bash脚本,可以下载和重命名文件。问题在于bash无法理解的一些乱七八糟的非标准字符

例如:

�������� ���� ���'�-2.jpg
我的狂欢

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"
读行时
;做
如果[!-z“$line”];然后
新文件名=$(echo“$line”| uniconv-编码俄语翻译| uniconv-编码拉丁语| tr-d'\[\]\!\@\\\\\\\\\$\%\^\&\*\(\)\?')
mv“$line”“$NEW_文件名”
fi

完成为什么不删除带有如下内容的字符:

sed的/[^a-zA-Z0-9\.-]///g'

它不工作吗?尝试将-r选项添加到您的read命令中:
read-r行
。您是说
$FILES\u to\u CONVERT
中的某些文件名乱七八糟,还是脚本正在生成一些乱七八糟的文件名?某些文件名乱七八糟。您是否尝试过用
重命名
而不是
tr
<代码>重命名's/[^a-zA-Z0-9]//g'*.jpg
rename
是一个用于重命名多个文件的Perl脚本。也许不完全是您想要的,但有时非常有用。可能是这些文件名包含换行符。