Jadi, saya mendapat direktori yang berisi direktori lain, dan saya bertanya-tanya apakah mungkin untuk menghapus file yang tidak memiliki ukuran. Biasanya file-file ini adalah 0 byte dan karena saya ingin menggabungkan semua subdirs ini saya bisa mengganti file yang benar-benar sah dengan file 0 byte yang tidak berbobot, dan itu berarti file legit saya. Adakah cara untuk menghapus file byte nol?
command-line
files
pengguna245115
sumber
sumber
-empty
bukan-size 0b
.Temukan dan hapus semua file dengan ukuran 0 secara rekursif:
Contoh:
sumber
Anda juga dapat melakukannya langsung di shell. Ini bisa bermanfaat jika Anda tidak ingin menghapus file tersembunyi yang kosong (file yang namanya dimulai dengan a
.
). Meskipun Anda juga bisa melakukannyafind
, alternatifnya adalah menggunakan shell itu sendiri:Penjelasan
shopt -s globstar
: mengaktifkan opsi globstar untuk bash yang membuat**
kecocokan satu atau lebih subdirektori.**/*
akan cocok dengan semua file dan direktori di direktori saat ini dan semua subdirektori.for file in **/*; do ...; done
: beralih ke semua file dan direktori yang ditemukan;[ ! -s "$file" ]
:[ -s "$file" ]
benar jika file ada dan tidak kosong. Oleh karena itu,[ ! -s "$file" ]
(!
invers tes) adalah benar jika file tidak ada atau jika kosong.[ -f "$file" ]
: true jika file tersebut adalah file biasa. Bukan direktori atau file perangkat atau symlink dll.rm "$file"
: hapus file.The
&&
memastikan bahwa perintah berikutnya hanya dijalankan jika yang sebelumnya berhasil jadi ini hanya akan menghapus kosong, file biasa.sumber
Meskipun sebagian besar jawaban di atas benar, lihatlah perintah ini:
meskipun Anda dapat menjalankan perintah ini:
ini akan menghapus semua file kosong.
Anda dapat melihat file-file itu sebelum menghapus:
sumber
-type f
,-empty
juga akan menghapus direktori kosong. Baru saja memeriksa halaman manual.