[问题] 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