我有许多带有$'351'
和$'346'
等字符的文件。我还没有弄清楚如何在 bash 上引用这些文件。如何使用mv
和sed
更改其名称?
当我运行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