Tüm alt klasörlerde belirli bir boyuttan daha küçük olan tüm dosyaları nasıl silerim?


88

Daha büyük pdf dosyalarında, bazı büyük çok sayfalı tif dosyalarıyla birlikte birleştirilen küçük tif dosyalarını (160kb'dan az) içeren birçok alt klasöre sahip bir klasörüm var.

Büyük dosyaları silmeden (tif veya pdf) tüm küçük tif dosyalarını silmek ve dizin yapısını korumak istiyorum. Komut satırını kullanarak Linux'ta nasıl devam edebilirim?

Yanıtlar:


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

-deleteDoğru dosyaların bulunduğunu doğrulamak için ilk önce komutu çalıştırın .

Not -önce 160k. Sadece 160ktam olarak 160 kilobayt demek. -160k160 kilobayttan küçük anlamına gelir. +160k160 kilobayttan daha büyük anlamına gelir.

-type 'f'Kuvvetler dosyalar üzerinde sadece hareket için komut ve dizinleri atlayın. bu yol, kalıpla eşleşen adlara sahip klasörler içeriyorsa hataları önler *.tif.

Eğer (160 bayt yerine 160 kilobayt gibi) bayt cinsinden boyutunu filtre uygulamak istiyorsanız o zaman bu gibi yazmak zorunda: 160c. Sadece yazarsanız 160, 160 * 512 bayt olarak yorumlanacaktır. Bu POSIX tarafından garip bir gereksinimdir. Daha fazla bilgi için burayı okuyun: https://unix.stackexchange.com/questions/259208/purpose-of-find-commands-default-size-unit-512-bytes


Ubuntu man sayfası bundan söz ediyor gibi görünüyor. "TESTS" bölümünün hemen altında: Sayısal argümanlar n'den büyük için + n, n'den küçük için n, + n olarak tam olarak n olarak belirtilebilir.
jdg

1
Teşekkürler. Bilginin mankette başka bir yerde olabileceği aklıma gelmedi.
lesmana 12:14

Bu komutun tekrarlı bir şekilde çalışması da güzel. Kullanım davam 12kB altındaki .txt dosyalarını silmek olacaktır.
Paz

sudo'ya gerek yok mu?
Jean-François Gagnon

11
Bayt cinsinden boyutlar için 50c, 50b değil 50c belirtin!
Evengard,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.