GNU/Linux >> Belajar Linux >  >> Linux

bagaimana saya bisa menghapus direktori kosong secara rekursif di direktori home saya?

find perintah adalah alat utama untuk operasi sistem file rekursif. Gunakan -type d ekspresi untuk memberi tahu find Anda hanya tertarik untuk menemukan direktori (dan bukan file biasa). Versi GNU dari find mendukung -empty tes, jadi

$ find . -type d -empty -print

akan mencetak semua direktori kosong di bawah direktori Anda saat ini.

Gunakan find ~ -… atau find "$HOME" -… untuk mendasarkan pencarian pada direktori home Anda (jika itu bukan direktori Anda saat ini).

Setelah Anda memverifikasi bahwa ini memilih direktori yang benar, gunakan -delete untuk menghapus semua kecocokan:

$ find . -type d -empty -delete

Anda dapat menghubungi rmdir di setiap direktori, sejak rmdir hanya akan menghapus direktori jika kosong:

find "$HOME" -type d -exec rmdir {} + 2>/dev/null

Jika Anda juga ingin mencetak direktori yang dihapus, Anda perlu memeriksa apakah direktori tersebut kosong:

find "$HOME" -type d -exec bash -c 'shopt -s nullglob; shopt -s dotglob; files=("$1"/*); [[ ${files[@]} ]] || rmdir -v "$1"' -- {} \; 

Ini adalah contoh bash murni (versi 4 atau lebih tinggi):

shopt -s globstar
for dir in **/; do
   files=("$dir"/*)
   [[ ${files[@]} ]] || rmdir -v "$dir"
done

Linux
  1. Bagaimana Cara Menghapus Direktori Secara Rekursif Dengan Wildcard?

  2. Cara Menemukan dan Menghapus Direktori dan File Kosong di Unix

  3. Cara Menemukan dan Menghapus Direktori dan File Kosong di Linux

  1. Daftarkan semua file secara rekursif dalam direktori termasuk file dalam direktori symlink

  2. bash menemukan direktori

  3. Bagaimana saya bisa menjalankan dos2unix di seluruh direktori?

  1. Cara Menghapus Akun Pengguna dengan Direktori Rumah di Linux

  2. Cara Mencari dan Menghapus Direktori Secara Rekursif di Linux

  3. Temukan Kecualikan Direktori?