Le moyen le plus rapide de lire la dernière ligne dans le model de plusieurs files avec la même extension

J'ai dans un directory /home/files/ certains files qui ont tous la même extension .txt .

Par exemple

 1.txt 2.txt 3.txt 4.txt 5.txt test.txt 

Ces files sont tous identiques en format de données, mais datatables sont différentes. Tous ces files ont au less la ligne suivante à l'intérieur

 frames=[number here] 

Cette ligne apparaît plusieurs fois dans un file, donc j'ai besoin d'get la valeur de frames= qui apparaît en dernier dans le file.

Et comme je l'ai dit je veux get cette ligne, de tous les files ci-dessus qui correspondent à l'extension .txt dans un directory (pas besoin de récursif).

Y at-il une seule command bash pour le faire?

MODIFIER

Production attendue:

 1.txt=5000 2.txt=123 3.txt=3452 4.txt=111 5.txt=958 test.txt=1231 

Avec find + grep :

 find . -name '*.txt' -exec sh -c 'grep -HPo "frames=\K.*" "$0" | tail -n1' {} \; 

Et avec shell for boucle + grep de la même façon:

 for file in *.txt; do grep -HPo 'frames=\K.*' "$file" | tail -n1; done 

En utilisant gawk et à condition qu'il n'y en aura qu'un = sur la ligne, vous pouvez faire:

 gawk -F= 'ENDFILE { print FILENAME"="$2 }' *.txt 

Mettre à jour

Je me suis rendu count que j'avais mal interprété cette question, je pensais que la ligne que vous searchz était toujours la dernière ligne. Pour utiliser la dernière ligne qui commence par frames= , pour gawk do:

 gawk -F= '/^frames=/ { frames=$2 } ENDFILE { print FILENAME"="frames }' *.txt 

Ou avec n'importe quel awk :

 for file in *.txt; do awk -F= '/^frames=/ { frames=$2 } END { print FILENAME"="frames }' "$file" done 

Vous pouvez le faire avec awk

 awk -F= '/^frame/{line=FILENAME "=" $2}NR!=1 && FNR==1{print line}END{print line}' *.txt 

Ou avec sed (version GNU plus que 4.2.2)

 sed -sn '/^frame/{s///;h};${F;x;p}' *.txt | sed 'N;s/\n//' 

Avec pax (probablement aussi la plupart des tar ) et tr et GNU sed :

 pax -w ./*txt | tr -s \\0 | sed -nz '/txt$/h /\n*.*frames\(=[0-9]*\).*\n/!d H;x;s//\1/p'