você pode combinar encontrar e classificar
find -path "some pattern" -printf "%T@ %P\n" | sort -n | tail -1
Eu tenho os seguintes arquivos.
root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver*
-rw-r--r-- 1 root root 0 Jul 5 18:54 /client/folder299/version_1
-rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder299/ifolder/version_a
-rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder300/ifolder1/version_b
-rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder301/ifolder2/version_c
-rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder302/ifolder3/version_d
-rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder300/version_2
-rw-r--r-- 1 root root 0 Jul 19 13:35 /client/folder301/version_3
-rw-r--r-- 1 root root 0 Jul 19 13:36 /client/folder302/version_4
Estou tentando obter o arquivo de versão mais recente para um padrão correspondente a um ID. Exemplo é mostrado abaixo.
root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver* | grep 299
-rw-r--r-- 1 root root 0 Jul 5 18:54 /client/folder299/version_1
-rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder299/ifolder/version_a
A versão mais recente é version_a no exemplo acima.
root@VMBOX:/client# ls -lrt /client/*/ver* /client/*/*/ver* | grep 299 | tail -1
-rw-r--r-- 1 root root 0 Jul 5 18:58 /client/ifolder299/ifolder/version_a
Disseram-me que essa abordagem não é boa para encontrar um arquivo ( Por que * not * parse 'ls'? ) e estou procurando uma maneira alternativa como o link . Por favor, deixe-me saber se algo não está claro.
Atualização:
De abaixo resposta por Jasen, eu poderia obter o arquivo mais recente no caminho / cliente
find /client -path "*299*" -printf "%T@ %P\n" | sort -n | tail -1
Mas, o comando acima fornece o arquivo mais recente. Eu estou procurando encontrar o arquivo de versão mais recente.
você pode combinar encontrar e classificar
find -path "some pattern" -printf "%T@ %P\n" | sort -n | tail -1