صاحب الموضوع
#1
Giriş ve bağlam
Komut satırında find ile dosya arama yaparken çıktı formatını istediğiniz gibi düzenlemek, otomatikleştirme ve raporlama için kritik bir beceri. default çıktısı genelde her satırda bir yol içerir; ancak çıktı üzerinde filtrasyon, dönüştürme ve özel gösterim gerekir. Bu yazıda pratik yaklaşımları ve güvenilir yöntemleri ele alacağım.
1) Temel çıktı biçimini değiştirmek
find komutu kendi içinde çıktıyı biçimlendirme imkanı sunmaz; ancak -print0 ile null karakterle ayırıp xargs veya while döngüsü ile güvenli biçimde işleyebilirsiniz. Örneğin:
Bu, her dosya için yol ve dosya başına satır sayısını ayrı satırlarda verir.
2) printf ile özel biçimlendirme
GNU find’in -printf seçeneği sayesinde her bulunduğu noktada biçimlendirme yapabilirsiniz. Örneğin:
Bu çıktı, her dosya için yolu, boyutu ve son değiştirme zamanını tek bir satırda gösterir. Biçimlendirme kriterleri şu şekilde çalışır: %p yol, %s boyut, %T@ epoch saniyeleri, %f dosya adı, %h dizin yolu.
3) Örnekler: ihtiyaca göre çıktı düzenleme
4) Çıktıyı dosyaya yönlendirmek ve filtrelemek
5) Güvenlik ve performans ipuçları
Kapanış
Bu yaklaşımlar, find’in çıktısını doğrudan biçimlendirmek yerine çıktı akışını güvenli ve esnek biçimde dönüştürmeyi sağlar. Kullandığınız hedefe göre -printf ile doğrudan biçimlendirme en temiz çözüm olurken, daha karmaşık manipulasyonlar için dış iletişim araçlarıyla birleşim en pratiktir. Siz hangi senaryoda çıktı biçimlendirme gereği hissediyorsunuz?
Komut satırında find ile dosya arama yaparken çıktı formatını istediğiniz gibi düzenlemek, otomatikleştirme ve raporlama için kritik bir beceri. default çıktısı genelde her satırda bir yol içerir; ancak çıktı üzerinde filtrasyon, dönüştürme ve özel gösterim gerekir. Bu yazıda pratik yaklaşımları ve güvenilir yöntemleri ele alacağım.
1) Temel çıktı biçimini değiştirmek
find komutu kendi içinde çıktıyı biçimlendirme imkanı sunmaz; ancak -print0 ile null karakterle ayırıp xargs veya while döngüsü ile güvenli biçimde işleyebilirsiniz. Örneğin:
كود
1find /var/log -type f -name "*.log" -print0 | xargs -0 -I {} sh -c 'echo FILE:{}; wc -l < "{}"''Bu, her dosya için yol ve dosya başına satır sayısını ayrı satırlarda verir.
2) printf ile özel biçimlendirme
GNU find’in -printf seçeneği sayesinde her bulunduğu noktada biçimlendirme yapabilirsiniz. Örneğin:
كود
1find /var/log -type f -name "*.log" -printf "path=%p size=%s bytes mtime=%T@\n"Bu çıktı, her dosya için yolu, boyutu ve son değiştirme zamanını tek bir satırda gösterir. Biçimlendirme kriterleri şu şekilde çalışır: %p yol, %s boyut, %T@ epoch saniyeleri, %f dosya adı, %h dizin yolu.
3) Örnekler: ihtiyaca göre çıktı düzenleme
- Sadece dosya adını ve boyutu, dosya türünü ayırıcıyla:
كود
1find . -type f -printf "%f|%s|%y\n"- Tarihsel sıralama ve özel format:
كود
1find . -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort- Söz dizimiyle tam yol yerine özet:
كود
1find . -type f -printf "%p\n" | sed 's|^\./||' # ./ kaldırılır
4) Çıktıyı dosyaya yönlendirmek ve filtrelemek
- Belirli boyutun üzerindeki dosyalar:
كود
1find / -type f -size +1M -printf "%p %kK\n" > bigfiles.txt- Belirli uzantıya göre filtreleyip sadece adları:
كود
1find . -type f -name "*.conf" -printf "%f\n" > conf_list.txt5) Güvenlik ve performans ipuçları
- Büyük dosya ağaçlarında -print0 ile kimliksel ayraç kullanın ve xargs -0 ile güvenli işleme geçin.
- -prune ile gereksiz alt dizinleri atlayın; örn. belirli bir kök altında kapsamı sınırlamak:
كود
1find /var -path /var/tmp -prune -o -type f -print- Çıktıyı hızlı incelemek için awk veya perl ile ek işlemler uygulayın:
كود
1find . -type f -printf "%p|%s\n" | awk -F'|' '$2>1024{print $0}'Kapanış
Bu yaklaşımlar, find’in çıktısını doğrudan biçimlendirmek yerine çıktı akışını güvenli ve esnek biçimde dönüştürmeyi sağlar. Kullandığınız hedefe göre -printf ile doğrudan biçimlendirme en temiz çözüm olurken, daha karmaşık manipulasyonlar için dış iletişim araçlarıyla birleşim en pratiktir. Siz hangi senaryoda çıktı biçimlendirme gereği hissediyorsunuz?
