如何將帶有外國名稱的文件列表寫入終端中的 csv 文件?
我的終端文件夾中有一些外語名稱的文件。在終端上,當我執行“
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
.跑:
export LANG=C.UTF-8 locale
$LC_XXX
如果將某些變數添加為其他變數,則可能需要取消設置它們。請注意,Microsoft 產品可能無法辨識 UTF-8 文件,除非它們以
ZERO WIDTH NO-BREAK SPACE
字元開頭(在 UTF-16 中也用作字節順序標記,在 UTF-8 中字節順序沒有問題)。您可以添加該字元並將行尾轉換為 Microsoft 格式:
unix2dos -m < file.csv > file.ms.csv