Listar arquivos com base nos tempos de modificação

2

Como posso executar o comando ls com todas as suas opções e listar todos os arquivos em diretórios de forma recursiva e classificá-los com base nas últimas horas de modificação?

ou seja ls -lth em todos os arquivos em diretórios recursivamente

    
por portoalet 05.02.2010 / 03:32

2 respostas

1

Primeiro, qual sabor do unix você está usando? Sistemas baseados em BSD terão uma opção diferente definida para ls do System V.

Em segundo lugar, o link lista uma opção -R para forçar uma listagem recursiva e -c para basear sua classificação em ctime ou tempo de modificação.

O truque é verificar se o seu sabor do * nix usa uma versão de ls que inclui essas opções.

    
por 05.02.2010 / 04:04
1

Parece que você quer uma classificação global, em vez de uma classificação por diretório, como você obteria com ls -Rlth .

Se o número total de arquivos não for muito grande, isso pode ser feito usando o comando find para reunir os nomes e passá-los para ls para classificação:

find . -type f -exec ls -lth {} +

ou alternativamente

find . -type f -print0 | xargs -0 ls -lth

(Em alguns sistemas mais antigos, o comando find não suporta -exec ... + ou -print0 . Nesse caso, você pode usar -print em vez de -print0 e omitir -0 , mas será não funciona com nomes de arquivos contendo espaços ou outros caracteres especiais.)

Advertência: Se o número de arquivos que você está classificando for grande, pode haver muitos para listar como argumentos para um único comando ls . Nesse caso, ls será chamado várias vezes e a classificação só será correta em cada grupo de arquivos.

    
por 05.02.2010 / 08:18