En yeni dosyada grep


2

Alt klasörlerdeki en yeni dosyadan belirli bir satır bulmaya çalışıyorum. Dosyaların adı aynı. Yani yapı şöyle:

  • Klasör
    • SubFolder1
      • filename.XML
    • SubFolder2
      • filename.XML

Çizgiyi almak için grep kullanıyorum

grep -r "mySubString" folder/

Dosyaları burada önerildiği gibi sıralamak için bulmayı denedim . Ancak en yeni dosyadan sadece satır almak için ikisini nasıl birleştireceğimi bilmiyorum.

Yardımınız için teşekkürler.


grepEn son dosyada çalıştırmak isteyip istemediğiniz , hiçbir şey bulamadığı halde veya grepbir eşleşme bulan en son dosyadan çıktı almak isteyip istemediğiniz belli değildir .
AFH

Yorumunuz için teşekkürler AFH. Grep'i en yeni dosyada çalıştırmak istiyorum.
Mario Levrero

Bu durumda @ ap0 aşağıdaki en temiz cevabı verir, ancak dizgenin hangi dosyalardan geldiğini bilmek istiyorsanız modifikasyona ihtiyacı olacaktır.
AFH

Yanıtlar:


1
find . -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "

Bu, bu komutu çalıştırdığınız dizinden ve tüm alt dizinlerden oluşturulan en son dosyayı döndürür. İsterseniz belirli bir dizinde arama .yapın ve dizin yoluna geçin .

Bu dosyanın içeriği için grep:

cat `find . -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -f2- -d" "` | grep "mySubString"

Düzenleme: Emin değilim. Bunu çabucak kendim denedim ve işe yaradı. Bir test dosyası oluşturdum ve bu komutu kullandım. Benim için çalıştı. Bir sorun varsa, lütfen bana bildirin.


1

zsh:

grep pattern **/*(.om[1])

omdeğişiklik tarihine göre sipariş ve .normal dosyalar için bir niteleyici.

GNU find:

grep pattern "$(find -type f -printf '%T@ %p\n'|sort -n|tail -n1|cut -d' ' -f2-)"

%T@değişiklik zamanı ve %pyol adı.

BSD:

grep pattern "$(find . -type f -exec stat -f '%m %N' {} +|sort -n|tail -n1|cut -d' ' -f2-)"

%mdeğişiklik zamanı ve %Nyol adı.

bash 4:

shopt -s globstar;grep pattern "$(ls -dt **|head -n1)"

Bu, dizinleri içerir ve argüman listesi çok uzun bir hataya neden olabilir.


Bu da doğru, itibarımın düşük olması nedeniyle yeniden oy kullanamıyorum.
Mario Levrero
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.