web-dev-qa-db-ja.com

フォルダーを削除できないのはなぜですか?

Could not remove the folder [Folder name].

Show more details
 Error removing file: Directory not empty

Cancel-Skip All-Skip

私はこれらのフォルダを端末から削除しようとしました:

rm -r
14
tepheno

Sudo rm -rを試しましたか。どんな種類のファイルがありますか?最初にすべてのファイルを削除してから、フォルダーを削除することもできます。それは余分な仕事ですが、時には仕事を成し遂げる価値があります。

Sudoはスーパーユーザーアクション用です。

9
wlraider70

この問題は、btrfsファイルシステム上のフォルダーで発生しました。マウントポイントとlsofの確認は、通常の検索対象です。私の場合、それは修正されて以来、古いバグによって引き起こされた破損でした:

通常チェックすること:

  • lsof + D <path>-これはli st allopenfiles。開いているファイルを含むフォルダーを削除することはできませんが、通常は少し異なるエラー「デバイスまたはリソースがビジーです」が表示されます。 「+ D <path>」を省略すると、lsofはすべてのファイルシステム上のすべてのフォルダーのリストを表示することに注意してください-これは時間の無駄になります。 ;)
  • mount:これは現在マウントされているファイルシステムを表示します。アクティブにマウントされたマウントポイントまたはその親フォルダーを削除することはできません。
  • btrfs sub list <path>:マウントポイントと同様に、btrfs固有のコマンドを使用しない限り、btrfsサブボリュームを削除することはできません:btrfsサブボリューム削除<パス>

破損の回避策

簡単に修復できない破損の場合、基本的な回避策は、バックアップしてファイルシステムをフォーマットし、復元することです(不良データを残します)。ファイルシステムにあるデータの量によっては、これは面倒な場合があります。 :-/

私の場合、問題のフォルダーはサブボリューム内にあったので、上記を行うことができましたが、ファイルシステム全体ではなくサブボリュームのみを削除しました。データをバックアップし、サブボリュームを削除しました:btrfs sub del <subvolume-path>。その後、問題のあるフォルダーを除外して、新しいサブボリュームに復元することができました。

I_sizeの破損

私の場合、原因はi_sizeの破損であることがわかりました。 Btrfsはi_sizeを使用して、フォルダーが空かどうかを判断します。これを確認するには、次を実行します。

stat -c %s <foldername>

Btrfsの空のフォルダーのi_sizeはゼロでなければなりません。 extでは、通常4kです。

関連リンク:

https://btrfs.wiki.kernel.org/index.php/Problem_FAQ#I_cannot_delete_an_empty_directory

9
zaTricky

ディレクトリにcdを試してから、rm -rf *を使用してすべてのファイルを削除します。次に、ディレクトリから出て、rmdirを使用してディレクトリを削除します。

6
jkd

試してください:rmdir --ignore-fail-on-non-empty *directory*

0
Jamie

Sudo rm -rf [Folder name]を試してください

それでも空ではないディレクトリが表示されている場合は、そのディレクトリが使用されていることを意味します。それを閉じるか、どのプログラムがそれを使用しているかを確認してから、コマンドを再使用してください。

Unityプロジェクトを削除しようとしていて、Unityハブで使用されていたときに働いていました。ユニティハブを閉じてコマンドを書き直すだけで正常に機能しました。

0
Molham Mohamed

Ubuntu VirtualBox仮想マシン(VM)にマウントされているWindowsにフォルダーがあります。 Windowsファイルマネージャから、またはVM内からrmdirまたはrm -Rf *を使用して削除できませんでした。

TLDRrm -Rf *を使用して、Git Bashで(もちろんWindowsで)最終的にそれらを削除することができました。

Windowsファイルマネージャーで削​​除しようとしたときに、フォルダーを削除するには管理者特権が必要だと言われました。しかし、管理者としても失敗しました。

Ubuntu VM(共有ファイルの削除で問題が発生したことはありません)内から、エラーcannot remove protocol errorとその他のエラーが発生しました。

最後に、WindowsのGit Bashで、フォルダーを削除できました。 Git Bashがフォルダーに何らかのロックをかけていると推測しています。 Git Bashでは、作業ディレクトリは削除しようとしたディレクトリの1つでした。バックアウトし、rm -Rfを使用してエラーなしで削除しました。

0
Buttle Butkus

書き込み権限が設定されていない場合、ディレクトリを削除できません。

次の例では、私はディレクトリの所有者ですが、削除することはできません。 chmodで書き込み許可を追加すると、すべてが成功します。

DIR:/xieerqi
skolodya@ubuntu:$ ls -dl TESTDIR/                                              
dr-xr-xr-x 2 xieerqi xieerqi 4096 Jan 24 16:06 TESTDIR//

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              
rm: cannot remove ‘TESTDIR/one & two’: Permission denied
rm: cannot remove ‘TESTDIR/tom&jerry’: Permission denied
rm: cannot remove ‘TESTDIR/jekyl&hide’: Permission denied
rm: cannot remove ‘TESTDIR/pdfReader.sh’: Permission denied

DIR:/xieerqi
skolodya@ubuntu:$ chmod +w TESTDIR/                                            

DIR:/xieerqi
skolodya@ubuntu:$ rm -rf TESTDIR/                                              

DIR:/xieerqi
skolodya@ubuntu:$ echo $?
0
0

削除するフォルダーの直前のフォルダーに移動し、フォルダー名でフォルダー名を変更してこのコマンドを実行します:rm -rf foldername

Rは再帰を意味し、fは力を意味します。

0
Ramon Suarez