我正在嘗試刪除 ReiserFS 檔案系統上一個據稱為空的目錄,但我不能,因為我rm
一直抱怨該目錄不為空。
$ rm -rf thedirectory
rm: cannot remove `thedirectory': Directory not empty
$ ls -a thedirectory
. ..
問題是,我所做的一切都是為了確定實際上是什麼是目錄下好像顯示有三個文件沒有名字。例如:
$ cd thedirectory
$ ls
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
ls: cannot access : No such file or directory
$ find .
.
./
./
./
$ ls -N | cat -A
$
$
$
由於我無法取得檔案名,因此我無法stat
對這些神秘檔案運行或執行任何有用的操作。stat
目錄本身上的A產生看似正常的結果:
$ stat .
File: `.'
Size: 192 Blocks: 0 IO Block: 4096 directory
Device: 807h/2055d Inode: 825484 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 1000/ diazona) Gid: ( 1000/ diazona)
Access: 2012-01-27 16:32:45.000000000 -0500
Modify: 2012-01-27 16:31:58.000000000 -0500
Change: 2012-01-27 16:31:58.000000000 -0500
我想這涉及到某種文件系統損壞,這可能意味著我必須關閉,從活動的 USB 驅動器啟動,然後嘗試運氣reiserfsck
。但有沒有更簡單的方法來處理這個問題呢?
答案1
將-f
標誌賦予 rm 意味著當它無法執行某些操作時,它不會抱怨,例如嘗試刪除另一個使用者(例如 root)擁有的檔案或您沒有對該目錄的寫入權限。 sudo rm -rf /path/to/thedirectory
毫無疑問會破壞目錄和其中的檔案。 ls -B thedirectory | cat -ve
也可能具有啟發性。
答案2
您是否嘗試過直接刪除inode?
$ ls -iN | cat -A
794539 $
$ find . -inum 794539 -exec rm -i {} \;
答案3
您可以查看所有文件
ls -la /name/of/path
...這將為您提供一個長列表,包括所有點文件。
若要刪除目錄及其內部的所有內容(包括其他子目錄),請使用:
rm -rf /name/of/path/*
....儘管如果您打算使用通配符,請小心,這會導致(不名)著名的聲明:
rm -rf *
……這確實是危險的,即使對於「普通用戶」也是如此。如果您需要使用通配符,我建議:
rm -rf /name/of/path
或者
rm -rf ./*
....最後一個點斜線是在假設您位於要清空的目錄「內部」的情況下完成的...您仍然需要向下移動目錄並將其從其外部刪除。