刪除系統中的亂碼小技巧

linux下 刪除亂碼文件名


當文件名爲亂碼的時候,無法通過鍵盤輸入文件名,所以在終端下就不能直接利用rm,mv等命令管理文件了。

但是我們知道每個文件都有一個i節點號,我們可以考慮通過i節點號來管理文件。首先,我們要取得文件的

i節點號。這個可以通過ls命令的-i選項獲得得。

$ ls -i

41697812 a 32983551 di 32983554 ethnet.c 32983543 hard_link

32983542 de.c 32983544 ethnet 32983541 ethnet.h 32983543 kstat

每個文件名前面的數字就是文件的i節點號。有了文件的i節點號,我們就可以利用find命令的-inum選項配合

常用的文件管理命令進行文件管理了。例如,如果要刪除di文件,命令如下:

$ find . -inum 32983551 -exec rm {} \;

$ ls

a de.c ethnet ethnet.c ethnet.h hard_link kstat

看di文件被刪除了。因爲這個例子是在unix-center的機子上運行的,暫時沒有文件名爲亂碼的文件做爲示例,

但是道理是一樣的,不影響我們的理解。

要重命名一個文件,命令也很簡單,如下:

-bash-3.00$ ls -i

32983542 de.c 32983554 ethnet.c 32983543 hard_link 32983545 kstat.c

32983544 ethnet 32983541 ethnet.h 32983543 kstat 32983681 sys_link

$ find . -inum 32983542 -exec mv {} di.c \;

$ ls -i

32983542 di.c 32983554 ethnet.c 32983543 hard_link 32983545 kstat.c

32983544 ethnet 32983541 ethnet.h 32983543 kstat 32983681 sys_link

看看,de.c文件被重命名爲di.c了。特別要提一下的是,在find命令中的“{}”表示find命令找到的文件,在

-exec選項執行mv命令的時候,會利用按i節點號找到的文件名替換掉“{}”


find的命令 有的時候記不住 反正我對我來說是這樣.我從鳥哥看到這命令的詳細解釋 給大家分享下:

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

這個命令中的{} 相當於 前面的對應的inum對應的文件或者是目錄的 而後面的\;中的;是做爲命令的結束。其中\是轉義作用 -exec我的理解類似於管道 重定向。


拙見請指定正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章