我的终端文件夹中有一些外语名称的文件。在终端上,当我执行“ ls
”时,我会在下图中看到右侧的列表。
当我这样做时ls -t | tail -n +2
,我会看到如下图所示的真实角色。
我想将第二张图片中的原始字符的文件名列表写入 csv 文件?有没有办法做到这一点?我在这里发现了非常相似的问题,但这些问题的文件名并不陌生。如果我使用它会是什么样子ls -t | tail -n +2 > files.csv
但我想拥有原始名称的列表,因为我需要根据原始名称从现有文件中获取元信息,其中文件名没有任何顺序并且文件数量也不同。
在 MobaXterm 上,当我转到终端上的设置时,字符集被选为 UTF-8(编码)。另外,我检查了是否看到 UTF-8。
~$ locale -a
C
C.UTF-8
POSIX
看起来这些文件名是用 UTF-8 编码的,你的终端是 UTF-8 的,但你的语言环境不是。
locale charmap
可能输出类似ANSI_X3.4-1968
(又名ASCII)的东西。ASCII 没有定义任何代码点高于 127 的字符。非 ASCII UTF-8 字符都在 2 个或更多字节上编码,这些字节都大于 127。ls
将这些字节渲染为?
因为它们不形成 ASCII 中的可打印字符(当前语言环境charmap)。您想使用charmap 为UTF-8 的语言环境。在您报告的可用语言环境列表中
locale -a
,只剩下C.UTF-8
.跑:
$LC_XXX
如果将某些变量添加为其他变量,则可能需要取消设置它们。请注意,Microsoft 产品可能无法识别 UTF-8 文件,除非它们以
ZERO WIDTH NO-BREAK SPACE
字符开头(在 UTF-16 中也用作字节顺序标记,在 UTF-8 中字节顺序没有问题)。您可以添加该字符并将行尾转换为 Microsoft 格式: