Автор темы
#1
find ile boyuta göre dosya taraması
[list]
Temel yaklaşım: find komutunun -size parametresi ile boyut filtrelemek. Örneğin:
İşaretler:
Boyut birimini netleştirmek için -size ile birlikte şu ifadeler kullanılır:
Not: KB/MB/GB gibi okunabilir birimlerle kullanım için -size +100k, -size +1M gibi biçimler desteklenir. Ancak kullandığınız find sürümünün birim yorumlayıcısını kontrol etmek akıllıca olacaktır.
Birlikte kullanımlar:
İzleme ve performans ipuçları:
-İşlem yaparken -exec ile güvenli bir şekilde işlem uygulanabilir, ancak çok sayıda dosya için -print0 ve xargs -0 kombinasyonu performansı artırır:
Güvenlik ve izinler:
Bu konu üzerinde kendi ortamınızda hangi komutları nasıl yorumladığınızı ve karşılaştığınız performans farklarını paylaşabilir misiniz? Özellikle büyük depolarda tarama yapanlar hangi hiberasyonları, hangi dizinleri hariç tutmayı tercih ediyor?
Merhaba arkadaşlar, dosya sistemi üzerinde belirli boyutlardan büyük veya küçük olan dosyaları hızlıca bulmanın güvenilir ve yaygın yolu nedir? Özellikle yüzlerce binlerce dosya içeren dizinlerde, hangi seçeneklerle sıralama yapmak hem güvenilir hem de performanslı olur? Bu konuyu farklı senaryolarda kurcalayalım: günlük arşivler, medya kütüphaneleri, log dizinleri ve yedeklemeler.
[list]
КОД
123
find /path/to/search -type f -size +100M
find /path/to/search -type f -size -10k
İşaretler:
- -size +N fakirlikte N bayt mı, yoksa blok cinsinden mi? Genelde 1 blok = 512 bayttır, ancak platforma göre değişebilir. GNU find, -size ile blok bazlı çalışır; -size +100M gibi taşkınlıklar için -size +100M ifadesi MB cinsinden çalışır.
- -type f yalnızca dosyaları içerir; dizinleri yok saymak için kullanılır.
- -print gibi çıktı kontrolü için varsayılan davranış çoğu durumda yeterli olur, ancak yönlendirme ile çıktı dosyaya da yazılabilir.
- -size n : tam boyut (bloklar ölçütüyle)
- -size +n : n bloktan büyük
- -size -n : n bloktan küçük
Not: KB/MB/GB gibi okunabilir birimlerle kullanım için -size +100k, -size +1M gibi biçimler desteklenir. Ancak kullandığınız find sürümünün birim yorumlayıcısını kontrol etmek akıllıca olacaktır.
- Yalnızca belirli boyut aralığında dosyalar:
КОД
12
find /path/to/search -type f -size +1M -size -10M
- Belirli boyuttan büyük tüm dosyaları listelemek ve çıktı paylaşmak:
КОД
12
find /var/log -type f -size +5M -exec ls -lh {} \;
- Çok büyük ağaçlarda -prune ile alt ağaçları hariç tutmak hızlı sonuçlar verir:
КОД
123
find /usr -path /usr/share -prune -o -type f -size +100M -print
[/* bu örnekte /usr/share alt ağaçlarını taramadan hariç tutar */]
- İstisnalar için -path ile belirli dizinleri hariç tutabilir veya -not -path ile filtreleyebilirsiniz.
-İşlem yaparken -exec ile güvenli bir şekilde işlem uygulanabilir, ancak çok sayıda dosya için -print0 ve xargs -0 kombinasyonu performansı artırır:
КОД
12
find /data -type f -size +50M -print0 | xargs -0 -I{} cp {} /backup/large/
- Kökten çalışıyorsanız veya farklı kullanıcılar altında tarama yapıyorsanız, izin sorunları olabilir. Gerekirse sudo ile çalışmak gerekir;
- Özellikle arama kökünde geniş taramalarda bellek kullanımı ve I/O yoğunluğu nedeniyle sistem etkilenebilir.
Özetle, find ile -size ile dosyaları boyuta göre filtrelemek basittir ve -size birimleri çoğu durumda MB/GB olarak kullanılabilir. İleri seviye kullanım için -prune, -path ve -exec/xargs kombinasyonları ile etkili ve güvenli bir iş akışı kurabilirsiniz.
Bu konu üzerinde kendi ortamınızda hangi komutları nasıl yorumladığınızı ve karşılaştığınız performans farklarını paylaşabilir misiniz? Özellikle büyük depolarda tarama yapanlar hangi hiberasyonları, hangi dizinleri hariç tutmayı tercih ediyor?
