web-dev-qa-db-ja.com

rm-rfは空のディレクトリでは機能しません

ターミナルでディレクトリを削除しようとしましたが、機能しません。

myuser$ rm -rf foo/
rm: foo/: Directory not empty

私のメインディレクトリにはfooしかありません:

myuser$ ls
foo

'ls-la'コマンドに問題はありません。

myuser$ ls -la
drwxrwxrwx@ 1 myuser  staff  65536  1 mai 10:53 .
drwxrwxrwx@ 1 myuser  staff  32768 28 aoû  2013 ..
drwxrwxrwx  1 myuser  staff  32768  1 mai 10:36 foo

ディレクトリfooは空のようです:

myuser$ ls foo/

myuser$ ls -la foo/
ls:  : No such file or directory
total 192
drwxrwxrwx  1 myuser  staff  32768  1 mai 10:36 .
drwxrwxrwx@ 1 myuser  staff  65536  1 mai 10:53 ..

しかし、「ls ::そのようなファイルやディレクトリはありません」という行は奇妙です。そして、それが私がこのディレクトリを削除できない理由だと思います。 「lsfoo」が何かがあるように空の行を返すこともわかりましたが、何ですか?そして、どのようにそれを削除しますか?

ありがとう

4
guest0105

fooディレクトリに、名前に印刷できない文字が含まれているファイルがあると思います。 ls出力のseeの文字を実際の文字lsoutputsと比較します。

cd foo
ls             # you see what your terminal lets you see
ls | od -a     # you see the character codes *really* coming from ls

名前が簡単に表示または入力できないファイルを削除するには、さまざまな方法があります。ここでは、rmのインタラクティブな-iオプションを使用できます。

cd foo
rm -i *

明らかに、これには注意してください。そして、削除したいものにのみyと言ってください。

最初のrm -rfがそれを削除しなかった理由について...あなたはrmエイリアスを持っているのだろうか? alias rmを使用して確認してください。 \rm -rf fooを使用して、(エイリアスをバイパスして)rmの実際のバージョンを一時的に実行できます。

2
Lqueryvg

「ディレクトリが空ではありません」というメッセージは、かなり誤解を招く恐れがあります。通常、rm -rfはディレクトリ内のすべてを再帰的に削除するため、空であるかどうかは関係ありません。

この場合、確認したいことがいくつかあります。

  • このディレクトリにdf -hでマウントされているものがあるかどうかを確認し、必要に応じてマウントを解除してください
  • Sudo lsof fooを実行して、アプリケーションによって開かれているファイルがあるかどうかを確認し、必要に応じてアプリケーションを終了してみてください
  • Sudo rm -rf fooを試してください–おそらくあなたは権限を持っていないだけです(私はここではそうではないと思いますが)
  • ログアウトしてから再度ログインしてみてください
  • マシンを再起動してみてください
1
slhck

コマンド

 rm -rf dir

隠しファイルを削除しませんつまりドットで始まるファイル、たとえば。bashrcディレクトリが空ではありません診断は、いくつかの隠しファイルがあることを意味します。

 ls -a

またはi番目

 ls .*

あなたはそれらを再帰的に消去することができます

 rm -rf .[a-Z]*

その後、問題のあるディレクトリをrmdirすることができます。

編集:

次の編集は私のポイントを証明します:

  root@rasal:/tmp# mkdir ttp
  root@rasal:/tmp# cd ttp
  root@rasal:/tmp/ttp# touch .test
  root@rasal:/tmp/ttp# ls -a
  .  ..  .test
  root@rasal:/tmp/ttp# rm -rf *
  root@rasal:/tmp/ttp# ls -a
  .  ..  .test
  root@rasal:/tmp/ttp# 
0
MariusMatutiae