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

问题描述 投票:0回答:1

我有许多文件,如$'\351'$'\346'。我还没想出如何在bash上引用这些文件。如何使用mvsed更改名称?

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

'根'$'\346''%8B'$'\240''.html'
bash non-ascii-characters
1个回答
0
投票

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

但是,由于您并不真正了解或关心原始文件名应该是什么,只是想要一个可逆的转换以使名称更容易处理,您可以将所有文件重命名为其字节的hexdump:

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

© www.soinside.com 2019 - 2024. All rights reserved.