无法重命名文件名

Posted

技术标签:

【中文标题】无法重命名文件名【英文标题】:Can't rename a file name 【发布时间】:2013-08-31 10:16:31 【问题描述】:

我有一个用于下载和重命名文件的小型 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"

【问题讨论】:

不行吗?尝试在您的读取命令中添加 -r 选项:read -r line 您是说$FILES_TO_CONVERT 中的某些文件名是乱码,还是脚本正在生成一些乱码文件名? 有些文件名乱码 你试过rename而不是tr吗? rename 's/[^a-zA-Z0-9]//g' *.jpgrename 是一个用于重命名多个文件的 Perl 脚本。也许不完全是您正在寻找的东西,但有时很有帮助。 可能是这些文件名包含换行符。 【参考方案1】:

你为什么不删除那些像这样的字符:sed 's/[^a-zA-Z0-9_\.-]//g'

【讨论】:

以上是关于无法重命名文件名的主要内容,如果未能解决你的问题,请参考以下文章

为啥linux无法重命名文件

文件路径乱码,无法打开、重命名、移动、删除、粉碎

文件夹重命名的问题

无法重命名文件名

无法重命名文件(系统找不到指定的文件(代码:2))

文件夹重命名出现非法字符文件