Bagaimana cara saya menghapus semua file yang lebih kecil dari ukuran tertentu di semua subfolder?


88

Saya memiliki folder dengan banyak sub-folder yang berisi file tif kecil (kurang dari 160kb) yang telah digabung bersama dalam file pdf yang lebih besar, bersama dengan beberapa file tif multi-halaman besar.

Saya ingin menghapus semua file tif kecil tanpa menghapus file yang lebih besar (tif atau pdf) dan mempertahankan struktur direktori. Bagaimana saya melakukannya di Linux menggunakan command-line?

Jawaban:


155
find . -name "*.tif" -type 'f' -size -160k -delete

Jalankan perintah tanpa -deleteterlebih dahulu untuk memverifikasi bahwa file yang benar ditemukan.

Perhatikan -sebelumnya 160k. Hanya 160kberarti persis 160 kilobyte. -160kberarti lebih kecil dari 160 kilobyte. +160kberarti lebih besar dari 160 kilobyte.

Perintah -type 'f'memaksa untuk hanya bertindak pada file dan melewati direktori. ini akan menghindari kesalahan jika path berisi folder dengan nama yang cocok dengan pola *.tif.

Jika Anda ingin menyaring ukuran dalam bytes (seperti dalam 160 byte bukan 160 kilobyte) maka Anda harus menulis seperti ini: 160c. Jika Anda baru saja menulis 160itu akan ditafsirkan sebagai 160 * 512 byte. Ini adalah persyaratan aneh oleh POSIX. Baca di sini untuk rincian lebih lanjut: https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


Halaman manual ubuntu sepertinya menyebutkan ini. Tepat di bawah bagian "UJI": Argumen numerik dapat ditentukan sebagai + n untuk lebih besar dari n, -n untuk kurang dari n, n untuk tepat n.
jdg

1
Terima kasih. tidak terpikir oleh saya bahwa informasi itu mungkin berada di tempat lain di halaman manual.
lesmana

Sangat menyenangkan perintah ini juga bekerja secara rekursif. Kasus penggunaan saya adalah menghapus file .txt di bawah 12kB.
Sun

tidak perlu untuk sudo?
Jean-François Gagnon

11
Untuk ukuran dalam byte, tentukan 50c, bukan 50b atau 50!
Evengard
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.