作者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/cn.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