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 教學

遇到亂碼檔名(如含特殊字元、控制字元)無法用一般 rm 刪除時,可透過 inode 編號 精準定位刪除,支援檔案與目錄(含非空目錄),並可批次處理。

核心步驟:查詢 inode → 依 inode 刪除

1. 查詢 inode 編號

ls -i          # 列出當前目錄檔案 inode
ll -i          # 詳細模式顯示 inode

輸出範例:17956913 -rw-r--r-- 1 oracle oinstall 0 Jan 18 20:24 1?.txt,第一欄即 inode。

2. 刪除檔案

find . -inum 17956913 -exec rm {} \;

或先改名再刪:

find . -inum 17956913 -exec mv {} normal_name.txt \;
rm normal_name.txt

3. 刪除目錄(含非空目錄)

find . -inum 18612483 -exec rm -rf {} \;

執行後可能提示 No such file or directory,實際已刪除成功(find 先找到 inode 再執行 rm,rm 執行時目錄項已消失)。

批次刪除多個 inode

使用 for 迴圈:

# 批次刪除檔案
for n in 22413315 22413314; do find . -inum $n -delete; done

# 批次刪除目錄
for n in 22413315 22413314; do find . -inum $n -exec rm -rf {} \;; done

原理解析

  • 每個檔案/目錄在檔案系統有唯一 inode,檔名只是目錄項指向 inode 的連結。
  • 亂碼檔名無法輸入時,繞過檔名直接操作 inode 即可。
  • -exec cmd {} \; 中 {} 為找到的路徑,\; 為命令結束符。

注意事項

  • 操作前建議備份重要資料,rm -rf 不可逆。
  • 若檔案系統為網路掛載(NFS/SMB),inode 可能不穩定,謹慎使用。
Copyright © Windows教程網 All Rights Reserved