Lista de arquivos em todos os subdiretórios por data de criação

3

Esqueci o nome de um arquivo que está em um diretório ou em um de seus subdiretórios. Eu me lembro da extensão do arquivo (.nb) e sei aproximadamente quando ele foi criado. Como posso listar todos os arquivos com essa extensão no diretório atual e nos subdiretórios, juntamente com as datas de criação? Estou usando o Mac OS X.

    
por Wintermute 02.11.2016 / 14:33

3 respostas

1

Isso deve conseguir o que você quer.

find . -type f -name '*.nb'|xargs stat -f '%c %N'|sort

Explicação

find . -type f -name '*.nb' encontra todos os arquivos com extensão .nb.

xargs stat -f '%c %N' imprime os arquivos com o timestamp unix na frente.

sort classificá-lo.

    
por 02.11.2016 / 15:11
1

A maneira mais fácil de fazer isso é com o zsh , que é instalado por padrão no macOS. Seus qualificadores de glob permitem selecionar e classificar arquivos por timestamp e outros metadados. O Zsh não suporta tempos de criação, mas suporta tempos de modificação e tempos de mudança de inode; um deles provavelmente corresponde ao tempo de criação.

Isso lista os 100 ( [1,100] ) arquivos mais recentes ( om ) regulares ( . ) com a extensão .nb no diretório atual e em seus subdiretórios ( **/ ):

zsh -c 'ls -ltr **/*.nb(.om[1,100])'

Isso lista arquivos modificados entre 7 e 14 dias atrás:

zsh -c 'ls -ltr **/*.nb(.m+6m-14)'
    
por 03.11.2016 / 01:49
-1
find -name '*.nb' -exec ls -rtl {} +

Mostrará informações detalhadas sobre todos os arquivos correspondentes ao padrão e os classificará do mais antigo para o mais novo (você pode ter do mais recente para o mais antigo removendo a opção r do comando ls ).

O + no final significa que você executou o comando no final da pesquisa, em vez de executá-lo para cada correspondência.

OBSERVAÇÃO : isso só funcionará com uma quantidade razoável de correspondências, se a linha de comando for muito longa para ls , ela será dividida em vários ls , resultando em vários subconjuntos classificados, enquanto toda a lista não será ordenada corretamente (obrigado @Gilles e @rudimeier por apontá-la).

    
por 02.11.2016 / 15:22