Themenersteller #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:
CODE
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:
CODE
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:

CODE
1find . -type f -printf "%f|%s|%y\n"

  • Tarihsel sıralama ve özel format:

CODE
1find . -type f -printf "%TY-%Tm-%Td %TT %p\n" | sort

  • Söz dizimiyle tam yol yerine özet:

CODE
1find . -type f -printf "%p\n" | sed 's|^\./||' # ./ kaldırılır


4) Çıktıyı dosyaya yönlendirmek ve filtrelemek

  • Belirli boyutun üzerindeki dosyalar:

CODE
1find / -type f -size +1M -printf "%p %kK\n" > bigfiles.txt

  • Belirli uzantıya göre filtreleyip sadece adları:

CODE
1find . -type f -name "*.conf" -printf "%f\n" > conf_list.txt


5) 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:

CODE
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:

CODE
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?

Sie müssen angemeldet sein, um zu antworten.

Benutzer, die dieses Thema gerade ansehen (Gesamt: 1, Mitglieder: 1, Gäste: 0)
Gesamt: 1 (mitglieder: 1, gäste: 0)
0 Zitate ausgewählt