![如何批量删除文件名中的不良字符?](https://linux22.com/image/958624/%E5%A6%82%E4%BD%95%E6%89%B9%E9%87%8F%E5%88%A0%E9%99%A4%E6%96%87%E4%BB%B6%E5%90%8D%E4%B8%AD%E7%9A%84%E4%B8%8D%E8%89%AF%E5%AD%97%E7%AC%A6%EF%BC%9F.png)
我有一些包含斯洛伐克字符的文件,我将它们复制到我的 Ubuntu 中,现在它们里面有这些奇怪的符号,有人知道我该如何删除这些字符吗?
答案1
您可以利用该iconv
实用程序,将字符串从一种字符编码转换为另一种字符编码,并且当目标编码错过类似字符时,还可以将其音译为类似的字符。
以下脚本将把命令行上传递的每个文件重命名为同名的 ascii 版本。input_enc
如果需要,修改变量,并将其作为第一个参数运行--no-test
以真正重命名。
#!/bin/bash
input_enc="UTF-8"
test=1
if [[ $1 == '--no-test' ]]; then
test=0
shift
else
echo "This is a simulation"
echo "run with --no-test as first parameter to really rename"
echo
fi
normalize() {
local f="$1"
echo "$f" | iconv -f "$input_enc" -t ASCII//TRANSLIT
}
for f; do
g="$(normalize "$f")"
if ((test)); then
echo mv -i "$f" "$g"
else
mv -i "$f" "$g"
fi
done