Explicação

Explicação

Esqueci o nome de um arquivo que está em um diretório ou em um de seus subdiretórios. Lembro-me da extensão do arquivo (.nb) e sei aproximadamente quando ele foi criado. Como posso listar todos os arquivos com esta extensão no diretório e subdiretórios atuais junto com suas datas de criação? Estou usando o Mac OS X.

Responder1

A maneira fácil de fazer isso é comzsh, que é instalado por padrão no macOS. Isso éeliminatórias globaispermitem selecionar e classificar arquivos por carimbo de data/hora e outros metadados. Zsh não oferece suporte a tempos de criação, mas suporta tempos de modificação e tempos de mudança de inode; um deles provavelmente corresponde ao horário de criação.

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

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

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

zsh -c 'ls -ltr **/*.nb(.m+6m-14)'

Responder2

Isso deve realizar o que você deseja.

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

Explicação

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

xargs stat -f '%c %N'imprima os arquivos com o carimbo de data/hora unix na frente.

sortclassificá-lo.

Responder3

Para bash (não mac):

find . -type f -iname '*.nb'| xargs -d '\n' stat -c '%z %N'|sort

encontre todas as entradas do tipo 'arquivo' no diretório atual e abaixo, correspondendo ao padrão

(-iname para ignorar maiúsculas e minúsculas)

canalize para xargs

(-d '\n' altera o delimitador para avanço de linha para permitir espaços nos nomes dos arquivos)

então para stat

(-c para formato de saída %z = última alteração de status %N nome de arquivo citado)

e classifique a saída

Responder4

find -name '*.nb' -exec ls -rtl {} +

Mostrará informações detalhadas sobre todos os arquivos que correspondem ao padrão e os classificará do mais antigo para o mais recente (você pode do mais recente para o mais antigo removendo a ropção do lscomando).

O +no final significa que você executa 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, lsela será dividida em vários ls's, resultando em vários subconjuntos classificados enquanto a lista inteira não será classificada corretamente (obrigado @Gilles e @rudimeier por apontar isso).

informação relacionada