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.