无法重命名文件名
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' *.jpg
。 rename
是一个用于重命名多个文件的 Perl 脚本。也许不完全是您正在寻找的东西,但有时很有帮助。
可能是这些文件名包含换行符。
【参考方案1】:
你为什么不删除那些像这样的字符:sed 's/[^a-zA-Z0-9_\.-]//g'
【讨论】:
以上是关于无法重命名文件名的主要内容,如果未能解决你的问题,请参考以下文章