Autor del tema
#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:
CÓDIGO
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:
CÓDIGO
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:
CÓDIGO
1find . -type f -printf "%f|%s|%y\n"- Tarihsel sıralama ve özel format:
CÓDIGO
1find . -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort- Söz dizimiyle tam yol yerine özet:
CÓDIGO
1find . -type f -printf "%p\n" | sed 's|^\./||' # ./ kaldırılır
4) Çıktıyı dosyaya yönlendirmek ve filtrelemek
- Belirli boyutun üzerindeki dosyalar:
CÓDIGO
1find / -type f -size +1M -printf "%p %kK\n" > bigfiles.txt- Belirli uzantıya göre filtreleyip sadece adları:
CÓDIGO
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:
CÓDIGO
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:
CÓDIGO
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?
