代码之家  ›  专栏  ›  技术社区  ›  Jellicle

在bash上处理像$'\346'这样的特殊字符

  •  0
  • Jellicle  · 技术社区  · 6 年前

    我有一些文件的字符,如 $'\351' $'\346' . 我还不知道如何在bash上引用这些文件。我怎么用 mv sed 改变他们的名字?

    当我跑的时候 ls ,例如,出现的文件之一显示为:

    'æ ¹'$'\346''%8B'$'\240''.html'
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   that other guy    6 年前

    这种情况下的大多数用户都希望使用 convmv 转换这种文件名的编码。

    export LC_ALL=C
    for f in *
    do
      mv -- "$f" "$(printf '%s' "$f" | od -t x1 -An | tr -cd 'a-f0-9')"
    done
    

    这将使文件 'æ ¹'$'\346''%8B'$'\240''.html' 进入之内 e6a0b9e6253842a02e68746d6c