web-dev-qa-db-ja.com

Sudoを使用してディレクトリの内容を削除する方法

私のアカウントがアクセスできないディレクトリを空にする正当な必要性があります(これは、アプリケーションによって使用されるキャッシュディレクトリであり、アプリケーションを実行するアカウントによって所有されています)。私のアカウントには完全なSudo特権(私は思う)が、問題のディレクトリの内容を削除する方法がわかりません。私のアカウントはディレクトリにcdできません。親ディレクトリにのみです。

Sudo rm directory/*

応答を与える

cannot remove `directory/*': no such file or directory

これは簡単な答えがあるはずの問題のようですが、見つかりません。

編集:問題のディレクトリは間違いなく空ではありません:

Sudo ls directory/

1000以上のファイル名を返します。

4
Dave Mulligan

シェルが拡張しようとしているため、問題が発生しています*をファイルのリストに追加しますが、ディレクトリを読み取る権限がないため、追加できません。

私はうまくいく2つのことを考えることができます

Sudo bash -c "rm directory/*"

この場合、*はあなたによってではなく、ディレクトリを読み取ることができるrootによって展開されます。

OR

Sudo find directory -type f -exec rm {} \;

上記はファイルを削除するだけでディレクトリは削除しません(それ以外の場合はdirectoryとその内容を削除します)が、エラーが発生しにくくなります。

編集:最初のオプションでは、誤ってdirectory/*の代わりにdirectory。*を記述していた

11
Omnipresence