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.
sort
classificá-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 r
opção do ls
comando).
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, ls
ela 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).