Mirip dengan jawaban exec rm, tetapi tidak memerlukan proses untuk setiap file yang ditemukan:
find . -size +100k -delete
Satu kalimat:
find . -size +100k -exec rm {} \;
Bagian pertama (find . -size +100k
) mencari semua file mulai dari direktori saat ini (.
) melebihi (+
) 100 kByte (100k
).
Bagian kedua (-exec rm {} \;
) memanggil perintah yang diberikan pada setiap file yang ditemukan. {}
adalah placeholder untuk nama file saat ini, termasuk path. \;
hanya menandai akhir dari perintah.
Ingatlah untuk selalu memeriksa apakah kriteria pemfilteran Anda sudah tepat dengan menjalankan find
mentah :
find . -size +100k
Atau, Anda bahkan dapat membuat salinan cadangan sebelum menghapus:
find . -size +100k -exec cp --parents {} ~/backup \;
python diinstal pada semua OS berbasis unix, jadi mengapa tidak menggunakannya sebagai ganti bash ?
Saya selalu menemukan python lebih mudah dibaca daripada awk
dan sed
sihir.
Ini adalah kode python yang akan saya tulis:
import os
Kb = 1024 # Kilo byte is 1024 bytes
Mb = Kb*Kb
Gb = Kb*Kb*Kb
for f in os.listdir("."):
if os.stat(f).st_size>100*Kb:
os.remove(f)
Dan ini adalah versi one-liner dengan python -c
python -c "import os; [os.remove(f) for f in os.listdir('.') if os.stat(f).st_size>100*1024]"
Dan jika Anda ingin menerapkan pencarian secara rekursif, lihat ini