Existem seis ferramentas muito usadas para resolver problemas semelhantes:
-
find, para procurar arquivos ou diretórios que correspondam a entradas específicas.As opções
-mindepthe-maxdepthcontrolam a profundidade da árvore do sistema de arquivos (em relação aos nomes especificados, que estão sempre na profundidade 0) em que o comando funcionará.A opção
-typeé útil para restringir a consideração a arquivos, diretórios, links simbólicos ou dispositivos.A opção
-printfé extremamente útil, pois faz com que o comando imprima as informações sobre os nomes correspondentes (itens de diretório) no formato desejado. Eu particularmente gosto de%TY%Tm%Td %TT %p\n, que imprime a data e a hora da última modificação e o caminho completo e o nome de cada correspondência em cada linha, usando o formatoYYYYMMDD HH:MM:SS.sss PATH. Este formato classifica corretamente, você vê. Para o último acesso, use%AY%Am%Ad %AT %p\n, mas observe que os registros de data e hora de acesso não são gravados se a opçãonoatimemount for usada ou se a opçãorelatimemount for usada, os registros de horário de acesso serão modificados apenas para o primeiro acesso após uma modificação ; a verificação menos utilizada recentemente não é, portanto, confiável. (A lista menos modificada recentemente, no entanto, é bastante confiável; os usuários podem modificar os carimbos de data e hora manualmente, mas, por outro lado, eles são mantidos automaticamente.) -
sortpara ordenar a saída.As opções
-d,-g,-h,-Me-ndefinem como os itens são comparados e a opção-Rtorna a ordem aleatória.A opção
-rpode ser usada para reverter a ordem de classificação (usada além de uma das opções acima).A opção
-tredefine como os campos (colunas) são definidos; Por padrão, espaços em branco (espaços e tabulações) separam colunas.A opção
-kpode ser usada para definir qual parte de cada linha é considerada a chave de classificação; por padrão, toda a linha é considerada. -
uniqé usado com frequência após a classificação para combinar vários resultados consecutivos itens em um - de modo que somente as linhas exclusivas sejam produzidas. -
cuté a maneira mais simples de escolher apenas colunas específicas de cada linha na saída.A opção
-fescolhe os campos a serem impressos. (Por padrão, as linhas com no máximo um campo (sem separadores) são impressas; a opção-ssuprime a impressão dessas linhas.)A opção
-dpode ser usada para redefinir a definição de um campo; Por padrão, os espaços em branco separam os campos. -
sedé um poderoso editor de fluxo, que se aplica < Expressões regulares para a entrada, filtragem e modificação conforme necessário. -
awké um intérprete para a linguagem awk. Scripts Awk são basicamente coleções de ações , trechos de código, que são executados para cada linha (ou antes ou depois de todo o processamento, ou se a linha (ou registro) corresponder a alguma regra).
Esse problema específico pode ser resolvido usando três dos comandos acima em um pipeline simples: use find para localizar arquivos nas profundidades desejadas da árvore, imprimindo uma data e hora classificáveis para cada arquivo, mais o caminho relativo para o arquivo; ordenar a saída; remova a parte de data e hora de cada linha, deixando apenas o caminho relativo para cada arquivo em cada linha.