[分享] 如何存取档名为乱码的档案

楼主: sppmg (sppmg)   2017-10-20 00:10:58
有时由一些 zip 档中解压会遇到档名非 UTF-8 而出现乱码档名的现象。
麻烦的是因为档名乱码,档案管理器可能根本无法存取此档,点选直接显示无此档案,
更不要说改名、删除等等操作。
难道我们只能让这档案放在那里占空间吗?
这里提供一个通用方法(刚爬文看到 zsh tab*2 后可以用光标选档,不知能否处理)
《利用 inode number》
Linux 档案系统是用 inode 做管理的,所以我们改对 inode 操作就行了。
列出档案 inode :
$ ls -i
你也可以加上其他参数, 如 -l , -lS (S依大小排序),
方便在众多乱码档名中确定档案。
修改档名:(我只知道 find 可以对 inode 操作)
$ find -maxdepth 1 -inum "0123455" -exec mv "{}" "new_name" \;
-maxdepth 1 限定搜索当前目录
-inum 搜索 inode number
-exec 执行指令,{} 代换成找到档名,记得以 \; 结束。
(如果你要直接删除就改用 rm {} 或 -delete )
如果你像我昨天要改 40 个档案(有更好办法吗? XD)
你可以弄一个 mv_by_inode.sh
################
#!/bin/bash
if [ -n "$1" ] && [ -n "$2" ] ; then
find -maxdepth 1 -inum "$1" -exec mv "{}" "$2" \;
else
echo Usage: `basename $0` inode_number new_name
echo
fi
作者: ddoomm (doom)   2017-10-20 11:21:00
good!
作者: phoenixcx (曼秀雷敦)   2017-10-20 11:53:00
作者: lantw44 (#######################)   2017-10-20 15:19:00
如果知道档名编码的话,可以直接用 convmv 改档名例如 convmv -f Big5 -t UTF-8 -r 就可以处理整个资料夹
作者: holishing   2017-10-20 21:08:00
推分享
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2017-10-20 22:21:00
我都用 *
作者: Vdragon (V字龙)   2017-10-21 00:17:00
实用
作者: sDwlr (0.0)   2017-10-21 10:58:00
推推 我最近用Android和Linux都有这问题
作者: losepacific (Losepacific)   2017-10-22 23:07:00
感恩。
作者: maple52046 (疾枫)   2017-10-28 20:17:00
推分享

Links booklink

Contact Us: admin [ a t ] ucptt.com