Como Encontrar e Classificar Arquivos com Base na Data e Hora de Modificação no Linux

Normalmente, temos o hábito de salvar muitas informações em forma de arquivos em nosso sistema. Alguns são arquivos ocultos, outros são mantidos em uma pasta separada criada para facilitar o entendimento, enquanto outros permanecem como estão. No entanto, toda essa bagunça preenche nossos diretórios, geralmente a área de trabalho, tornando-a bagunçada. O problema surge quando precisamos procurar por um arquivo específico modificado em uma data e hora específicas nessa enorme coleção.

Find and Sort Files by Date and Time in Linux

Pessoas confortáveis com interfaces gráficas de usuário podem encontrá-lo usando o Gerenciador de Arquivos, que lista os arquivos em um formato de lista longa, facilitando a identificação do que queremos. No entanto, usuários que estão habituados à tela preta, ou até mesmo qualquer pessoa que trabalhe em servidores que não possuem interfaces gráficas, desejariam um comando simples ou um conjunto de comandos que possam facilitar a busca.

A verdadeira beleza do Linux se mostra aqui, pois o Linux possui uma coleção de comandos que, se usados separadamente ou juntos, podem ajudar a procurar por um arquivo, ou classificar uma coleção de arquivos de acordo com seu nome, data de modificação, horário de criação, ou até mesmo qualquer filtro que você possa pensar em aplicar para obter o resultado desejado.

Aqui, vamos revelar a verdadeira força do Linux examinando um conjunto de comandos que podem ajudar a classificar um arquivo ou até mesmo uma lista de arquivos por Data e Horário.

Utilitários do Linux para Classificar Arquivos no Linux

Alguns utilitários básicos de linha de comando do Linux que são suficientes para classificar um diretório com base na Data e Horário são:

comando ls

ls – Listar conteúdos de diretório, este utilitário pode listar os arquivos e diretórios e até mesmo pode listar todas as informações de status sobre eles, incluindo: data e hora da modificação ou acesso, permissões, tamanho, proprietário, grupo etc.

Já cobrimos muitos artigos sobre o comando Linux ls e o comando sort, você pode encontrá-los abaixo:

  1. Aprenda o comando ls com 15 exemplos básicos
  2. Aprenda 7 comandos avançados do ls com exemplos
  3. 15 Perguntas Úteis sobre o comando ls no Linux

comando sort

sort – Este comando pode ser usado para classificar a saída de qualquer pesquisa apenas por qualquer campo ou coluna específica do campo.

Já cobrimos dois artigos sobre o comando Linux sort, você pode encontrá-los abaixo:

  1. 14 Exemplos do comando ‘sort’ no Linux – Parte 1
  2. 7 Exemplos Úteis do comando ‘sort’ no Linux – Parte 2

Esses comandos são em si mesmos comandos muito poderosos para dominar se você trabalha em telas pretas e precisa lidar com muitos arquivos, apenas para obter o que você deseja.

Algumas maneiras de classificar arquivos por data e hora

Abaixo está a lista de comandos para classificar com base em Data e Hora.

1. Listar Arquivos com Base no Horário de Modificação

O comando abaixo lista arquivos em formato de listagem longa e classifica os arquivos com base no horário de modificação, os mais recentes primeiro. Para classificar em ordem reversa, use o switch '-r' com este comando.

# ls -lt

total 673768
-rwxr----- 1 tecmint tecmint  3312130 Jan 19 15:24 When You Are Gone.MP3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony-1.mp3
-rwxr----- 1 tecmint tecmint  4177212 Jan 19 15:24 When I Dream At Night - Marc Anthony.mp3
-rwxr----- 1 tecmint tecmint  6629090 Jan 19 15:24 Westlife_Tonight.MP3
-rwxr----- 1 tecmint tecmint  3448832 Jan 19 15:24 We Are The World by USA For Africa (Michael Jackson).mp3
-rwxr----- 1 tecmint tecmint  8580934 Jan 19 15:24 This Love.mp3
-rwxr----- 1 tecmint tecmint  2194832 Jan 19 15:24 The Cross Of Changes.mp3
-rwxr----- 1 tecmint tecmint  5087527 Jan 19 15:24 T.N.T. For The Brain 5.18.mp3
-rwxr----- 1 tecmint tecmint  3437100 Jan 19 15:24 Summer Of '69.MP3
-rwxr----- 1 tecmint tecmint  4360278 Jan 19 15:24 Smell Of Desire.4.32.mp3
-rwxr----- 1 tecmint tecmint  4582632 Jan 19 15:24 Silence Must Be Heard 4.46.mp3
-rwxr----- 1 tecmint tecmint  4147119 Jan 19 15:24 Shadows In Silence 4.19.mp3
-rwxr----- 1 tecmint tecmint  4189654 Jan 19 15:24 Sarah Brightman  & Enigma - Eden (remix).mp3
-rwxr----- 1 tecmint tecmint  4124421 Jan 19 15:24 Sade - Smooth Operator.mp3
-rwxr----- 1 tecmint tecmint  4771840 Jan 19 15:24 Sade - And I Miss You.mp3
-rwxr----- 1 tecmint tecmint  3749477 Jan 19 15:24 Run To You.MP3
-rwxr----- 1 tecmint tecmint  7573679 Jan 19 15:24 Roger Sanchez_Another Chance_Full_Mix.mp3
-rwxr----- 1 tecmint tecmint  3018211 Jan 19 15:24 Principal Of Lust.3.08.mp3
-rwxr----- 1 tecmint tecmint  5688390 Jan 19 15:24 Please Forgive Me.MP3
-rwxr----- 1 tecmint tecmint  3381827 Jan 19 15:24 Obvious.mp3
-rwxr----- 1 tecmint tecmint  5499073 Jan 19 15:24 Namstey-London-Viraaniya.mp3
-rwxr----- 1 tecmint tecmint  3129210 Jan 19 15:24 MOS-Enya - Only Time (Pop Radio mix).m

2. Listar Arquivos com Base no Último Horário de Acesso

Listagem de arquivos no diretório com base no último horário de acesso, ou seja, com base no horário em que o arquivo foi acessado pela última vez, não modificado.

# ls -ltu

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Linux-ISO
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Music-Player
drwx------  3 tecmint tecmint       4096 Jan 19 15:22 tor-browser_en-US
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 bin
drwxr-xr-x 11 tecmint tecmint       4096 Jan 19 15:22 Android Games
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Songs
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 renamefiles
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 katoolin-master
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 Tricks
drwxr-xr-x  3 tecmint tecmint       4096 Jan 19 15:22 Linux-Tricks
drwxr-xr-x  6 tecmint tecmint       4096 Jan 19 15:22 tuptime
drwxr-xr-x  4 tecmint tecmint       4096 Jan 19 15:22 xdm
drwxr-xr-x  2 tecmint tecmint      20480 Jan 19 15:22 ffmpeg usage
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:22 xdm-helper

3. Listar Arquivos com Base no Último Horário de Modificação

Listagem de arquivos no diretório com base no último horário de modificação das informações de status do arquivo, ou o 'ctime'. Este comando listará primeiro o arquivo cuja qualquer informação de status como: proprietário, grupo, permissões, tamanho etc foi alterada recentemente.

# ls -ltc

total 3084272
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 15:24 Music
drwxr-xr-x  2 tecmint tecmint       4096 Jan 19 13:05 img
-rw-------  1 tecmint tecmint     262191 Jan 19 12:15 tecmint.jpeg
drwxr-xr-x  5 tecmint tecmint       4096 Jan 19 10:57 Desktop
drwxr-xr-x  7 tecmint tecmint      12288 Jan 18 16:00 Downloads
drwxr-xr-x 13 tecmint tecmint       4096 Jan 18 15:36 VirtualBox VMs
-rwxr-xr-x  1 tecmint tecmint        691 Jan 13 14:57 special.sh
-rw-r--r--  1 tecmint tecmint     654325 Jan  4 16:55 powertop-2.7.tar.gz.save
-rw-r--r--  1 tecmint tecmint     654329 Jan  4 11:17 filename.tar.gz
drwxr-xr-x  3 tecmint tecmint       4096 Jan  4 11:04 powertop-2.7
-rw-r--r--  1 tecmint tecmint     447795 Dec 31 14:22 Happy-New-Year-2016.jpg
-rw-r--r--  1 tecmint tecmint         12 Dec 18 18:46 ravi
-rw-r--r--  1 tecmint tecmint       1823 Dec 16 12:45 setuid.txt
...

Se o switch '-a' for usado com os comandos acima, eles podem listar e classificar até mesmo os arquivos ocultos no diretório atual, e o switch '-r' lista a saída em ordem reversa.

Para uma classificação mais aprofundada, como classificar a Saída do comando find, no entanto, o ls também pode ser usado, mas onde o 'sort' se mostra mais útil, já que a saída pode não ter apenas o nome do arquivo, mas quaisquer campos desejados pelo usuário.

Os comandos abaixo mostram o uso do sort com o comando find para classificar a lista de arquivos com base na Data e no Horário.

Para aprender mais sobre o comando find, siga este link: 35 Exemplos Práticos do Comando ‘find’ no Linux

4. Classificando Arquivos com Base no Mês

Aqui, usamos o comando find para encontrar todos os arquivos no diretório raiz ('/') e então imprimir o resultado como: Mês no qual o arquivo foi acessado e em seguida o nome do arquivo. Deste resultado completo, listamos as 11 primeiras entradas.

# find / -type f -printf "\n%Ab %p" | head -n 11

Dec /usr/lib/nvidia/pre-install
Dec /usr/lib/libcpufreq.so.0.0.0
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libcdr-0.0.so.0.0.15
Dec /usr/lib/msttcorefonts/update-ms-fonts
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn

O comando abaixo classifica a saída usando a chave como primeiro campo, especificado por '-k1' e então classifica por Mês conforme especificado por 'M' antes dele.

# find / -type f -printf "\n%Ab %p" | head -n 11 | sort -k1M

Apr /usr/lib/libcdr-0.0.so.0.0.15
Apr /usr/lib/libchromeXvMCPro.so.1.0.0
Apr /usr/lib/libchromeXvMC.so.1.0.0
Apr /usr/lib/libt1.so.5.1.2
Nov /usr/lib/ldscripts/elf32_x86_64.xr
Nov /usr/lib/ldscripts/elf_i386.xbn
Nov /usr/lib/ldscripts/i386linux.xn
Dec /usr/lib/libcpufreq.so.0.0.0
Dec /usr/lib/msttcorefonts/update-ms-fonts
Dec /usr/lib/nvidia/pre-install

5. Classificar Arquivos com Base na Data

Aqui, novamente usamos o comando find para encontrar todos os arquivos no diretório raiz, mas agora iremos imprimir o resultado como: última data em que o arquivo foi acessado, último horário em que o arquivo foi acessado e então o nome do arquivo. Deste resultado, pegamos as top 11 entradas.

# find / -type f -printf "\n%AD %AT %p" | head -n 11

12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

O comando de classificação abaixo primeiro classifica com base no último dígito do ano, em seguida classifica com base no último dígito do mês em ordem reversa e finalmente classifica com base no primeiro campo. Aqui, ‘1.8‘ significa a 8ª coluna do primeiro campo e ‘n’ à frente significa classificação numérica, enquanto ‘r’ indica classificação em ordem reversa.

# find / -type f -printf "\n%AD %AT %p" | head -n 11 | sort -k1.8n -k1.1nr -k1

12/07/15 10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
12/08/15 11:30:38.0000000000 /usr/lib/nvidia/pre-install
12/18/15 11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
11/12/15 12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn
04/11/15 06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
04/11/15 06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
04/11/15 06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
04/11/15 06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0

6. Classificação de Arquivos com Base no Horário

Aqui, novamente usamos o comando find para listar os top 11 arquivos no diretório raiz e imprimir o resultado no formato: última vez que o arquivo foi acessado e então o nome do arquivo.

# find / -type f -printf "\n%AT %p" | head -n 11

11:30:38.0000000000 /usr/lib/nvidia/pre-install
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

O comando abaixo ordena a saída com base na primeira coluna do primeiro campo da saída, que é o primeiro dígito da hora.

# find / -type f -printf "\n%AT %p" | head -n 11 | sort -k1.1n

06:08:34.9819910430 /usr/lib/libchromeXvMCPro.so.1.0.0
06:08:34.9939910430 /usr/lib/libt1.so.5.1.2
06:08:35.0099910420 /usr/lib/libcdr-0.0.so.0.0.15
06:08:35.0099910420 /usr/lib/libchromeXvMC.so.1.0.0
10:34:45.2694776230 /usr/lib/libcpufreq.so.0.0.0
11:19:25.2656728990 /usr/lib/msttcorefonts/update-ms-fonts
11:30:38.0000000000 /usr/lib/nvidia/pre-install
12:56:34.0000000000 /usr/lib/ldscripts/elf32_x86_64.xr
12:56:34.0000000000 /usr/lib/ldscripts/elf_i386.xbn
12:56:34.0000000000 /usr/lib/ldscripts/i386linux.xn

7. Ordenando a saída do ls -l com base na data

Este comando ordena a saída do comando 'ls -l' com base no 6º campo mês, em seguida, com base no 7º campo, que é a data, numericamente.

# ls -l | sort -k6M -k7n

total 116
-rw-r--r-- 1 root root     0 Oct  1 19:51 backup.tgz
drwxr-xr-x 2 root root  4096 Oct  7 15:27 Desktop
-rw-r--r-- 1 root root 15853 Oct  7 15:19 powertop_report.csv
-rw-r--r-- 1 root root 79112 Oct  7 15:25 powertop.html
-rw-r--r-- 1 root root     0 Oct 16 15:26 file3
-rw-r--r-- 1 root root    13 Oct 16 15:17 B
-rw-r--r-- 1 root root    21 Oct 16 15:16 A
-rw-r--r-- 1 root root    64 Oct 16 15:38 C

Conclusão

Da mesma forma, tendo algum conhecimento do comando sort, você pode ordenar quase qualquer listagem com base em qualquer campo e até mesmo em qualquer coluna desejada. Estes foram alguns truques para ajudá-lo a ordenar arquivos com base na data ou hora. Você pode criar seus próprios truques com base nesses. No entanto, se você tiver algum outro truque interessante, você sempre pode mencioná-lo em seus comentários.

Source:
https://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/