在 bash 上处理特殊字符,如 $'\346'



我有许多带有$'351'$'346'等字符的文件。我还没有弄清楚如何在 bash 上引用这些文件。如何使用mvsed更改其名称?

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

'根'$'346''%8B'$'240''.html'

在这种情况下,大多数用户都希望使用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

相关内容

  • 没有找到相关文章

最新更新