[問題] tty中文顯示問題

作者: cherubx (DanzYam)   2015-07-02 20:30:49
大家好,我知道在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:]].*"
或是改用
作者: bitlife (BIT一生)   2015-07-02 20:52:00
直接用wildcard來更改檔名會不會好一點?
作者: danny8376 (釣到一隻猴子@_@)   2015-07-02 22:36:00
我覺得大概是big5編碼檔名吧?
作者: losepacific (Losepacific)   2015-07-03 00:22:00
find . -regextype egrep -regex \'..*[^a-zA-Z0-9_-.)( /][^a-zA-Z0-9_-.)( /]*..*'剛剛測試find的正規表示,寫了這麼長才抓到直中文名中文檔名改碼或許可以找找關鍵字urlencodepython2 -c "import urllib, sysprint urllib.quote(sys.argv[1])" 4567889-我.txt在utf8環境下會輸出4567889-%E6%88%91.txtperl -MURI::Escape -e 'printuri_escape($ARGV[0])."\n";' "123-稍快.txt"2> /dev/null在utf8環境下會輸出123-%E7%A8%8D%E5%BF%AB.txt
作者: bitlife (BIT一生)   2015-07-03 11:13:00
你的linux有原生支援中文嗎? 原則上在中文utf-8環境,句點可以match中文,那些亂碼已不是中文字,所以.只能match一字元另外你的第2個regex,有greedy的問題,要使用修飾,我比較熟程式語語用的regex, command line的不是很確定抱歉,我看錯了,上面15,16分的推文請忽略

Links booklink

Contact Us: admin [ a t ] ucptt.com