有时由一些 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