Encontre arquivos com padrão e obtenha um mais recente

1

Eu quero encontrar um arquivo com um padrão específico e imprimir o arquivo mais recente que corresponde ao padrão com o caminho completo

find ../*.gz -type f -print0 | sort -nr | cut -d: -f2- | head -n 1

Como imprimo o caminho completo do mesmo?

Conforme solicitado pelos usuários ls -l :

ls -l
drwxrwxr-x 3 xxx xxx 4096 Jun 27 23:29 fa1caae85
drwxrwxr-x 3 xxx xxx 4096 Jun 27 23:28 ga1c93eda
drwxrwxr-x 3 xxx xxx 4096 Jun 27 23:28 la1cbbh05
drwxrwxr-x 3 xxx xxx 4096 Jun 27 23:08 node_modules
drwxrwxr-x 3 xxx xxx 4096 Jun 27 23:08 _tasks

Todas as três principais pastas contêm .gz dos arquivos, no entanto, quero extrair o arquivo .gz mais recente deles.

    
por Reddy 28.06.2016 / 08:44

2 respostas

1

Você pode fazer isso usando este comando

find "$(pwd)" -type f -name "*.gz" -printf "%T@ %p\n"| sort -n | cut -d' ' -f 2 | tail -n 1
    
por 28.06.2016 / 08:57
1

abordagem não ortodoxa:

zsh -c 'echo $PWD/**/*.gz(.om[1])'

onde

  • () após *.gz significa usar os chamados qualificadores glob, ou seja:
  • . considera apenas arquivos simples
  • om classificar por hora de modificação
  • [1] usa apenas o primeiro elemento

Obviamente, se você já estiver usando o zsh, não precisará chamá-lo com zsh -c .

    
por 28.06.2016 / 11:24