Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linux 刪除亂碼檔名檔案:透過 inode 編號精準移除

編輯:關於 Linux

當檔案系統編碼不一致(如 UTF-8 環境下建立 Big5 檔名)或檔案系統受損,會出現無法以一般指令(rm、mv)操作的亂碼檔名。利用 inode 編號 可繞過檔名直接操作檔案實體。

一、查看檔案 inode 編號

ls -li
# 輸出範例
920533 -rw-r--r-- 1 root root 0 Jul 27 08:27 ????file
918587 -rw-r--r-- 1 root root 0 Jul 27 08:26 ???

第一欄即為 inode 編號(920533、918587)。

二、使用 find 依 inode 刪除

# 先確認找到的檔案
find . -inum 920533
# 輸出:./????file

# 確認無誤後刪除
find . -inum 920533 -exec rm -f {} \;
  • -inum N:比對 inode 編號。
  • -exec rm -f {} \;:對每個結果執行 rm -f。

三、批次清理多個亂碼檔案

# 列出所有 inode 供人工確認
ls -li | grep -E '^\s*[0-9]+\s+.*\?\?'

# 或寫腳本互動式刪除
for inode in $(ls -li | awk '/\?\?/ {print $1}'); do
    find . -inum "$inode" -exec rm -iv {} \;
done

四、注意事項

  • inode 在同一檔案系統內唯一,跨掛載點不可用此法。
  • 目錄也是檔案,同樣可用 inode 刪除亂碼目錄(需加 -r)。
  • 若檔案正被進程開啟,rm 會移除目錄項但磁碟空間不釋放,直到進程關閉檔案描述符。

ls -li 輸出 inode 示意圖

透過 ls -li 取得 inode,再配合 find -inum -exec rm,即可精準刪除任何無法輸入檔名的亂碼檔案,避免誤刪正常檔案。

Copyright © Windows教程網 All Rights Reserved