如何存取檔名為亂碼的檔案 - Linux

Table of Contents

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



--

All Comments

Rebecca avatarRebecca2017-10-23
good!
Megan avatarMegan2017-10-23
Carol avatarCarol2017-10-24
如果知道檔名編碼的話,可以直接用 convmv 改檔名
Kama avatarKama2017-10-29
例如 convmv -f Big5 -t UTF-8 -r 就可以處理整個資料夾
Oscar avatarOscar2017-10-29
推分享
Bennie avatarBennie2017-11-01
我都用 *
Leila avatarLeila2017-11-04
實用
Queena avatarQueena2017-11-09
推推 我最近用Android和Linux都有這問題
Carol avatarCarol2017-11-09
感恩。
Kelly avatarKelly2017-11-12
推分享