encontrar la última date y date de file modificado y usar sed

Tengo una serie de files que contienen una date y necesito get el file que tiene la date más reciente y la última modificación de date y enviarlo a Sed. He intentado varios enfoques y parece que no puedo get uno que funcione.

por ejemplo:

find . -iname '*2014-09-20*' -type f -exec ls -lrt {} \; -exec tail -1 {} \; -exec sed -n -e '/some test/,/some other text/p' {} \; find . -iname '*2014-09-20*' -type f | xargs ls -lrt | tail -1 | sed -n -e '/some text/,/some other text/p' 

los files de logging se ven algo como esto

 -rw-r--r--. 1 root root 23042 Sep 18 14:21 logfilename_2014-09-19_20140918141909.log -rw-r--r--. 1 root root 2343 Sep 18 14:22 logfilename_2014-09-20_20140918142142.log -rw-r--r--. 1 root root 2343 Sep 18 14:23 logfilename_2014-09-21_20140918142245.log -rw-r--r--. 1 root root 2343 Sep 19 10:11 logfilename_2014-09-20_20140919101031.log -rw-r--r--. 1 root root 2343 Sep 19 10:12 logfilename_2014-09-21_20140919101122.log -rw-r--r--. 1 root root 2343 Sep 19 10:13 logfilename_2014-09-22_20140919101218.log 

Estoy esperando que la salida sea así:

 TEXT 1 line line line line TEXT 2 

que funciona cuando hago esto:

 sed -n -e '/TEXT 1/,/TEXT 2/p' logfilename_2014-09-20_20140919101031.log 

pero cuando canalizo los resultados a sed desde los cmds antes mencionados, no obtengo ningún resultado. Esto es lo que he intentado hasta ahora:

 find . -iname '*2014-09-19*' -type f | xargs stat --format '%Y : %y %n' | sort -nr | cut -d: -f2- | head -1 | sed -n -e '/TEXT 1/,/TEXT 2/p' find . -iname '*2014-09-19*' -printf "%T@\t%p\n" | sort | awk -F"\t" '{print $NF}' | tail -1 | sed -n -e '/TEXT 1/,/TEXT 2/p' 

Solutions Collecting From Web of "encontrar la última date y date de file modificado y usar sed"

El enfoque más simple (pero que falla si sus files contienen espacios o líneas nuevas u otros personajes extraños) es

 ls -ltr '*2014-09-20*' | tail -n 1 

La forma más segura es

 find . -printf "%T@\t%p\n" | sort | awk -F"\t" '{print $NF}' 

Si necesita usar el file con el time de modificación más reciente, el enfoque más simple es usar zsh en lugar de otro shell y usar sus calificadores glob om para orderar las coincidencias por time de modificación y [1] para retener solo la primera coincidencia.

 echo *2014-09-20*(om[1]) 

Si desea la última timestamp basada en la parte de la timestamp en el nombre del file, la sorting habitual será suficiente. La siguiente function actúa en su último argumento:

 act_on_last_file () { eval 'set -- "${'"$#"'}"' echo "$1" } act_on_last_file *2014-09-20*