Quero classificar apenas os arquivos por datas de atualização, incluindo subdiretórios.
Eu descobri ls -lrtR | grep ^-
. mas parece não classificar por datas de atualização.
E eu preciso salvar esta lista em um arquivo. É possível?
Apr 01 2010 InsideDoosanServiceImpl.class // in A directory
Apr 08 2010 MainController.class // in B directory
Apr 07 2010 RecommendController.class // in B directory
Apr 01 2010 MainDao.class // in B directory
Quero dizer, a lista inteira não é ordenada por data, mas primeiro por pasta e ordenada por data.
Quero uma lista ordenada pela data, incluindo todos os subdiretórios.
ls -lrt
.xargs
a realização de várias chamadasls
, pois os arquivos serão classificados apenas corretamente em cadals
chamada, mas não terão uma ordem global coerente na saída.Com ls, -R irá recursar diretórios e -t classificará por modificação. No entanto, ele percorre diretórios recursivamente e aplica -t a cada diretório. Ele não acumula todos os arquivos de todos os diretórios e depois classifica. (Tanto quanto eu entendo, o último é o que você quer)
Com o gnu find (1), você pode especificar o formato da saída para incluir o número de segundos desde a época e o nome do arquivo e, em seguida, pode canalizá-lo para classificar (1).
fonte
GNU find
ajuda. Mas o OP trabalha emAIX
máquinas, entãoGNU find
não estava disponível para ele.ls
que não seja possível acumular arquivos antes da classificação.ls
é tão rápido em comparação comfind
.ls
efind
lê os mesmos dados, então não consigo imaginar nenhum motivo para ser consideravelmente mais rápido do que encontrar. No meu sistema descoberta é 5 vezes mais rápido (pesquisar através de cerca de meio milhão de arquivos)find . -type f -printf "%T@ %Tc %p\n" | sort -n > out.txt
produzindo entradas de saída como1427913836.2330520210 wed 1 apr 2015 20:43:56 ./subdir/file.txt
.