作者cherubx (DanzYam)
看板Linux
標題[問題] tty中文顯示問題
時間Thu Jul 2 20:30:49 2015
大家好,我知道在tty顯示中文很麻煩,所以我想知道在亂碼背後的顯示模式
問題是這樣的:
我有50萬個檔案要處理,格式大概是 501025_ID.txt
因為一開始沒限制作業ID只能用英文,所以有幾個中文ID混入
LINUX顯示如下
502222_123.txt
503312_??+??.txt (為中文所顯示的亂碼)
507832_cher.txt
503878_-?{D.txt (為中文所顯示的亂碼)
要把中文的ID換成英數比較好處理
所以我用 find . -regextype egrep -regex ".*_[^[:alnum:]].*"
或是改用 -------------------------------".*_\?\?\+\?\?.*"
都沒辦法抓出任何一條Orz
想請問的是,怎麼樣可以知道linux實際上對那字元的認知是什麼?
或是,有認何方式可以直接把這些中文亂碼換成可見的英數文字嗎?
例如: 我 \u{num}
謝謝
Dan
--
不過是人
http://www.facebook.com/twaiting
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 124.155.187.95
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1435840252.A.199.html
1F:→ bitlife: 直接用wildcard來更改檔名會不會好一點? 07/02 20:52
是用「*」嗎?
2F:推 danny8376: 我覺得大概是big5編碼檔名吧? 07/02 22:36
我用big5內碼去search,無法匹配,看起來好像不是
3F:→ losepacific: find . -regextype egrep -regex \ 07/03 00:22
4F:→ losepacific: '..*[^a-zA-Z0-9_-.)( /][^a-zA-Z0-9_-.)( /]*..*' 07/03 00:22
5F:→ losepacific: 剛剛測試find的正規表示,寫了這麼長才抓到直中文名 07/03 00:23
6F:→ losepacific: 中文檔名改碼或許可以找找關鍵字urlencode 07/03 00:26
7F:→ losepacific: python2 -c "import urllib, sys 07/03 00:27
8F:→ losepacific: print urllib.quote(sys.argv[1])" 4567889-我.txt 07/03 00:29
9F:→ losepacific: 在utf8環境下會輸出4567889-%E6%88%91.txt 07/03 00:29
10F:→ losepacific: perl -MURI::Escape -e 'print 07/03 01:29
11F:→ losepacific: uri_escape($ARGV[0])."\n";' "123-稍快.txt" 07/03 01:29
12F:→ losepacific: 2> /dev/null 07/03 01:30
13F:→ losepacific: 在utf8環境下會輸出123-%E7%A8%8D%E5%BF%AB.txt 07/03 01:31
謝謝,我試著search這些關鍵字
今天試了一下,有個檔名是 501111_我愛PTT.txt
顯示為 501111_??+?{PTT.txt
用 .* 可以找的到
用 .*_.*PTT.* 變找不到了
表示中文無法匹配點號嗎? 但.*又可以匹配Orz
14F:→ bitlife: 你的linux有原生支援中文嗎? 原則上在中文utf-8環境,句點 07/03 11:13
15F:→ bitlife: 可以match中文,那些亂碼已不是中文字,所以.只能match一字 07/03 11:14
16F:→ bitlife: 元 07/03 11:14
17F:→ bitlife: 另外你的第2個regex,有greedy的問題,要使用修飾,我比較熟 07/03 11:15
18F:→ bitlife: 程式語語用的regex, command line的不是很確定 07/03 11:16
19F:→ bitlife: 抱歉,我看錯了,上面15,16分的推文請忽略 07/03 11:18
謝謝,我試試把整個系統改成zh_TW.utf8看看
做為小菜鳥,我放棄在LINUX上做了一.一
用find . -regextype egrep -regex ".*_[[:alnum:]].*"|xargs -i mv {} ./file
把所有正確的檔抓出來
剩的拉到windows上修改檔名
※ 編輯: cherubx (61.66.243.96), 07/03/2015 16:29:58