GNU/Linux >> Belajar Linux >  >> Linux

Temukan semua file nol-byte di direktori dan subdirektori

Bash 4+ diuji -Ini adalah cara yang benar untuk mencari ukuran 0:

find /path/to/dir -size 0 -type f -name "*.xml"

Telusuri beberapa ekstensi file berukuran 0:

find /path/to/dir -size 0 -type f \( -iname \*.css -o -iname \*.js \)

Catatan:Jika Anda menghapus \( ... \) hasilnya adalah semua file yang memenuhi persyaratan ini sehingga mengabaikan ukuran 0.


Sebagai tambahan dari jawaban di atas:

Jika Anda ingin menghapus file-file itu

find $dir -size 0 -type f -delete

Tidak, Anda tidak perlu repot grep.

find $dir -size 0 ! -name "*.xml"

Untuk mencetak nama semua file di dalam dan di bawah $dir berukuran 0:

find "$dir" -size 0

Perhatikan bahwa tidak semua implementasi find akan menghasilkan output secara default, jadi Anda mungkin perlu melakukan:

find "$dir" -size 0 -print

Dua komentar pada pengulangan terakhir dalam pertanyaan:

Daripada mengulangi setiap kata lain dalam sebuah string dan melihat apakah nilai alternatifnya nol, Anda dapat menghilangkan sebagian masalah yang Anda alami dengan spasi putih dengan mengulangi baris. misalnya:

printf '1 f1\n0 f 2\n10 f3\n' | while read size path; do
    test "$size" -eq 0 && echo "$path"; done

Perhatikan bahwa ini akan gagal dalam kasus Anda jika salah satu jalur keluaran ls berisi baris baru, dan ini memperkuat 2 poin:jangan parsing ls , dan memiliki kebijakan penamaan yang waras yang tidak mengizinkan spasi kosong di jalur.

Kedua, untuk mengeluarkan data dari loop, tidak perlu menyimpan keluaran dalam variabel hanya ke echo dia. Jika Anda membiarkan loop menulis hasilnya ke stdout, Anda melakukan hal yang sama tetapi menghindari menyimpannya.


Linux
  1. Ganti Nama Semua File dan Nama Direktori menjadi Huruf Kecil di Linux

  2. Shell Script:Menyortir File Ke Direktori Dan Subdirektori?

  3. Linux Temukan Dan Hapus Semua Symlinks Yang Berkaitan Dengan Direktori?

  1. Gunakan Temukan Untuk Menemukan Direktori Tertentu Dan Hapus Semua File Di dalamnya Kecuali Satu Direktori?

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

  3. Unzip Semua File Di Direktori

  1. Bagaimana cara mengambil string dalam direktori dan semua subdirektorinya?

  2. Hapus file yang cocok di semua subdirektori

  3. Bagaimana saya bisa menyalin semua file pdf secara rekursif dalam direktori (dan itu subdirektori) ke dalam satu direktori keluaran?