Filenames

如何刪除文件名包含非列印字元的文件

  • August 21, 2020

我以某種方式設法創建了一個似乎沒有文件名的文件。我在以下執行緒中找到了一些有關如何獲取文件更多詳細資訊的資訊。

但是,我嘗試了列出的一些建議,似乎無法刪除該文件。我不確定我做了什麼來創建它,但它發生在嘗試複製 xml 文件時。

該文件的一些資訊如下;

> ls -lb
total 296
-rw-r--r--   1 voyager  endeavor  137627 Jan 12 12:49 \177

> file *
:               XML document

> ls -i
417777   

我試圖找到使用 inum 開關,然後將其傳送到 rm ,因為這似乎是擺脫它的最簡單的方法。但是,下面連結的執行緒底部給出的範例對我來說失敗了。範例是:

> find -inum 41777 -exec ls -al {} \;
find: illegal option -- i
find: [-H | -L] path-list predicate-list

所以我首先嘗試使用路徑列表,如下所示,但這也不起作用:

> find . -inum 41777 -exec ls -al {} \;

我不確定不可列印字元 \177 是什麼或如何將其傳遞給rm命令,但我真的想確保在嘗試刪除此文件時不會弄亂任何其他文件/目錄。

該文件有一個名稱,但它由不可列印的字元組成。如果您使用 ksh93、bash、zsh、mksh 或 FreeBSD sh,您可以嘗試通過指定其不可列印的名稱來刪除它。首先確保名稱正確:ls -ld $'\177' 如果顯示正確的文件,則使用 rm:rm $'\177'

另一種(風險更大)的方法是使用rm -i -- *. 使用 -i 選項 rm 需要在刪除文件之前進行確認,因此您可以跳過所有要保留的文件,但只有一個。

祝你好運!

對於那些使用vim在目前工作目錄中執行它的人:

$ vim ./ 

並使用箭頭鍵或導航到文件j/k。然後點擊Shift+D並確認刪除y

引用自:https://unix.stackexchange.com/questions/28983