如何批量删除文件名中的不良字符?

如何批量删除文件名中的不良字符?

我有一些包含斯洛伐克字符的文件,我将它们复制到我的 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

相关内容