Mengapa saya mendapatkan "Direktori tidak kosong" ketika saya mencoba menghapus direktori kosong?

37

Saya memiliki direktori kosong ini, tetapi saya terus mendapatkan pesan kesalahan berikut:

Cannot remove test: Directory not empty

Saya tahu pertanyaan ini telah ditanyakan berkali-kali tetapi tidak satupun dari mereka yang membantu.

Saya mencoba ls -lamemastikan tidak ada file tersembunyi, dan sepertinya tidak ada: masukkan deskripsi gambar di sini

Saya mencoba sudo rmdir testjuga sudo rm -rf test, dan saya tidak tahu apa yang salah.

Saya membacanya mungkin ada masalah dengan sistem file, tetapi saya tidak tahu bagaimana cara memperbaikinya.

rbrick
sumber
Cobasudo fsck /
ike
2
Apakah itu direktori normal atau titik mount. Jika ini adalah titik pemasangan, itu harus dilepas sebelum dihapus. Jika itu adalah direktori normal, kadang-kadang mungkin ada beberapa pegangan terbuka yang menyebabkan masalah ini. Nyalakan ulang mesin Anda sekali dan coba hapus.
vembutech
@rbrick Apakah testnama pengguna login Anda? apa output dari echo $USER? dan apa echo $HOME?
αғsнιη
1
Saya bingung, mengapa pengguna tidak menjalankan izin pada direktori, tetapi grup tidak?
Julian Stirling

Jawaban:

36

Saya memiliki masalah yang sama pada hard disk eksternal, saya mencoba banyak cara menggunakan baris perintah, tetapi saya gagal setiap saat. Itulah yang berhasil bagi saya:

  1. Klik kanan pada folder
  2. Pindah ke tempat sampah
  3. Sampah kosong

Ya, ini konyol tetapi berhasil bagi saya (saya tidak benar-benar tahu bagaimana dan mengapa, tetapi folder terkutuk itu tidak ada lagi)

Marco Ottina
sumber
Saya mendapat masalah yang sama dan jawaban Anda berhasil. Tidak yakin apa yang terjadi, dan mengapa "-rf" gagal menghapus folder yang tidak kosong.
artm
3
Apa yang baru saja terjadi di sini? Mengapa ini berhasil?
Sahil Arora
Apa yang terjadi? Sejujurnya, saya tidak tahu. Mungkin, file folder rusak karena beberapa alasan: bendera seperti "kosong" atau penghitung file seperti "berapa banyak file di dalam" telah disetel ke nilai yang salah. Terkadang, kesalahan seperti ini bisa disebabkan oleh kerusakan pada hard disk. Mengapa ini berhasil? Saya tidak tahu bagaimana perintah diterapkan (pikirkan tentang C), tapi saya kira mereka memeriksa bendera dan penghitung sebelum bertindak (maksud saya, jika penghitung file> 0 maka "error: direktori tidak kosong" dan batalkan), sambil mengosongkan sampah langsung menghapus folder dan semua file dan subfoldernya tanpa semacam pemeriksaan.
Marco Ottina
Mungkin, menghapus folder melalui command line memerlukan beberapa kondisi, seperti kekosongan folder, (karena menghapus node folder dari sistem file hanya menghapus satu linknode dan mengharuskan folder kosong sehingga tidak ada file-node lain yang akan "lupa "melalui sistem file karena kehilangan tautan perantara ke mereka, diwakili oleh folder) .. dan menghapus folder melalui klik kanan -> menghapus atau mengosongkan sampah menghapus folder DAN semua file dan subfolder secara rekursif, tidak peduli dengan bendera, konter dan barang-barang seperti itu (jadi, tidak ada pemeriksaan yang dilakukan)
Marco Ottina
1
Dalam kasus saya, subdirektori yang dimaksud berada di folder yang dibagikan dari Mac saya ke VM linux, dan saya mencoba menghapus folder dari sisi VM linux. Tampaknya sisi Mac memegang beberapa folder. Melakukannya rm -rfdari sisi Mac berfungsi.
MindJuice
5

Saya telah memenangkan 10 + ubuntu dual system yang diinstal. Dan kedua sistem berbagi partisi windows.

Baru-baru ini, saya juga bertemu dengan tidak dapat menghapus folder kosong di partisi tersebut di bawah ubuntu. Saya tidak dapat menemukan solusi untuk menyelesaikannya di linux.

Namun, setelah saya beralih ke windows, dan jalankan

chkdsk

via cmduntuk disk target. Beberapa kesalahan sudah teratasi. dan kemudian saya lari

chkdsk /F

untuk memperbaiki kesalahan disk.

Setelah selesai, saya dapat menghapus folder-folder itu sekarang.

e-cloud
sumber
2
Metode ini bekerja untuk saya. Saya pikir penting juga untuk dicatat bahwa partisi yang dipakai bersama adalah format NTFS dan mungkin rusak.
Krismath
4

Anda bisa menghapusnya dengan mengetik sudo rm -rf {dir_name}. Direktori mungkin telah diatur untuk izin hanya-baca. Saya harap perintah yang diberikan dapat menghapus folder.

Wolverine
sumber
Directory not emptyLagi pula saya mengerti . Sepertinya aneh, jadi saya merekam layar saya untuk membuktikan.
naXa
Perintah itu dalam jawaban berfungsi bahkan jika direktori memiliki konten dan juga dengan subdirektori.
Wolverine
jangan percaya saya tonton saja: D drive.google.com/open?id=1UEYVa4UT6df7xucrq-lO82xjk3afHHzA
naXa
perilaku aneh ini disebabkan oleh kesalahan dalam partisi NTFS. diselesaikan dengan chkdsk /F.
naXa
4

Saya memiliki masalah yang sama tidak dapat menghapus direktori karena tidak kosong.

Urutan operasi ini berhasil untuk saya.

  1. Dari baris perintah terlebih dahulu

    sudo rmdir  --ignore-fail-on-non-empty folder-name-to-be-deleted
    

Perintah di atas membantu direktori abaikan Ubuntu tidak kosong.

  1. Lalu pergi ke folder dan Shift + Del. Itu saja.
Amit
sumber
3

Solusi GUI

  1. Pindahkan atau potong & tempel folder ke folder sampah
  2. kosongkansampahnya

itu dilakukan.

Solusi baris perintah

sudo mv folder_error/ .local/share/Trash

Anda dapat menghapus dengan trash-cli: trash-empty atau

sudo rm -fr ~/.local/share/Trash/*
Kadir Y.
sumber
1
Saya pikir solusi baris perintah di sini sebenarnya adalah solusi umum. Pindahkan folder kosong ke lokasi lain, dan hapus setelah dipindahkan. Misalnya, sesuatu seperti ini mkdir a ; mv test a/ ; rm -rf a/test ; rm -rf a. Pendekatan seperti itu bekerja untuk saya (walaupun saya tidak tahu mengapa itu akan), dan saya tidak perlu akses root.
Jake Fisher
2

Jika direktori adalah bagian dari sistem file yang dipasang dengan CIFS (alias samba), dan itu berisi file yang merupakan tautan simbolik yang rusak, maka lsgagal menyebutkan file itu. (Saya amati bug ini pada klien CIFS yang menjalankan 14.04.2 LTS, dan server yang menjalankan 12.04.5 LTS.)

Jadi direktori tidak kosong , tetapi (lebih dari CIFS) Anda tidak memiliki cara untuk melihatnya. File hanya dapat dilihat, dan dengan demikian hanya dapat dihapus, dengan perintah yang berjalan di server file hosting sistem file itu.

Camille Goudeseune
sumber
2

Jika Anda menggunakan btrfs, itu mungkin direktori kosong dengan i_size bukan nol. Anda dapat memeriksa apakah ini masalahnya:

stat -c %s test

Ukuran i_si folder kosong di btrfs harus nol. Dalam kasus saya, saya mendapat 6160~/.config/chromium/Default .

Solusi yang disarankan adalah meng-unmount sistem file, jalankan btrfs checkuntuk mengonfirmasi masalah dan memeriksa direktori bermasalah lainnya, dan akhirnya jalankan btrfs check --repairuntuk memperbaikinya. Namun, operasi ini berisiko, jadi sebaiknya Anda membuat cadangan file terlebih dahulu.

Sumber: FAQ Masalah Btrf

wzhd
sumber
1

Saya memiliki masalah yang sama pada Ubuntu 16.04 dan saya memperbaikinya dengan:

  1. mengosongkan folder tempat sampah
  2. me-reboot

Membuka dan menutup file manager tidak ada gunanya — hanya me-reboot berfungsi.

lembah
sumber
0

coba perintah ini:

sudo lsof | grep deleted 

Periksa daftar jika direktori Anda masih digunakan. : D

Jika demikian, hentikan layanan dan Anda akan dapat menghapus direktori.

ashwin2011
sumber
Jelas direktori tidak akan muncul dalam daftar deskriptor file yang terbuka dan dihapus jika tidak dapat dihapus. ; -]
David Foerster
0

Masalah ini muncul ketika folder atau file tersebut tidak disalin sepenuhnya. Ini Kesalahan Input / Output. Saya mencoba menghapus dengan Shift+ Delatau melalui perintah, tetapi ini tidak berhasil. Saya mencoba klik kanan dan "Pindahkan ke Sampah" dan ternyata berhasil.

lhodeniz
sumber