find . -iname foo.txt -exec ls -t "{}" \+ | head -n 1
Eu preciso pegar o caminho do foo.txt em uma estrutura de pastas. Existem vários arquivos foo.txt nessa estrutura, mas eu preciso de um automatizado para encontrar o mais recente. Sugestões?
find . -iname foo.txt -exec ls -t "{}" \+ | head -n 1
Este é um caso para qualificadores glob do zsh se eu já vi um.
cat **/foo.txt(om[1])
om
ordena os arquivos aumentando a idade (ou seja, pelo tempo de modificação, o mais recente primeiro). [1]
seleciona apenas a primeira correspondência. Se você está invocando isso de outro shell e quer usar o nome do arquivo, você pode usar
latest_foo=$(zsh -c 'print -r -- **/foo.txt(om[1])')
mas você também pode escrever todo o seu script em zsh.
find . -iname foo.txt -printf '%CYmd %p%f' | sort -n -t ' ' -k 2 | head -n 1