Geralmente, estamos acostumados a salvar muita informação na forma de arquivos em nosso sistema. Alguns arquivos ocultos, alguns mantidos em uma pasta separada criada para facilitar o nosso entendimento, enquanto outros mantidos como estão. Mas, tudo isso enche nossos diretórios; geralmente, o desktop, fazendo parecer uma bagunça. No entanto, surge um problema quando precisamos pesquisar um arquivo específico modificado em uma data e hora específica nesta enorme coleção.

Pessoas confortáveis com GUI’s podem encontrá-lo usando o Gerenciador de Arquivos, que lista os arquivos em formato de lista longa, facilitando descobrir o que queremos, mas usuários com hábito de telas pretas, ou mesmo qualquer pessoa trabalhando em servidores que são desprovidos de GUI’s gostariam de um simples comando ou conjunto de comandos que pudesse facilitar sua 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 pesquisar um arquivo ou classificar uma coleção de arquivos de acordo com seu nome, data de modificação, hora de criação ou mesmo qualquer filtro que você possa imaginar aplicar para obter seu resultado.
Aqui, vamos desvendar a verdadeira força do Linux examinando um conjunto de comandos que podem ajudar a classificar um arquivo ou mesmo uma lista de arquivos por Data e Hora.
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 em Data e Hora são:
comando ls
ls – Listagem de conteúdo de diretório, este utilitário pode listar os arquivos e diretórios e até mesmo listar todas as informações de status sobre eles, incluindo: data e hora de modificação ou acesso, permissões, tamanho, proprietário, grupo etc.
Já cobrimos muitos artigos sobre o comando ls e o comando sort no Linux, você pode encontrá-los abaixo:
- Aprenda o Comando ls com 15 Exemplos Básicos
- Aprenda 7 Comandos ls Avançados com Exemplos
- 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 por qualquer coluna específica do campo.
Já cobrimos dois artigos sobre o comando sort no Linux, você pode encontrá-los abaixo:
- 14 Exemplos de Comando ‘sort’ no Linux – Parte 1
- 7 Exemplos Úteis de Comando ‘sort’ no Linux – Parte 2
Esses comandos são, por si só, comandos muito poderosos para dominar se você trabalha em telas pretas e precisa lidar com muitos arquivos, apenas para obter o que deseja.
Algumas maneiras de classificar arquivos usando data e hora
Abaixo está a lista de comandos para classificar com base na data e hora.
1. Listar arquivos com base no horário de modificação
O comando abaixo lista arquivos em formato de lista longa e classifica os arquivos com base no horário de modificação, o mais recente primeiro. Para classificar em ordem reversa, use o interruptor '-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 listaria primeiro o arquivo cujas informações de status, como: proprietário, grupo, permissões, tamanho etc, foram alteradas 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 interruptor '-a'
for usado com os comandos acima, eles podem listar e classificar até mesmo os arquivos ocultos no diretório atual, e o interruptor '-r'
lista a saída em ordem reversa.
Para classificação mais aprofundada, como classificação na Saída do comando find, no entanto, o ls
também pode ser usado, mas o 'sort'
se mostra mais útil, pois a saída pode não ter apenas o nome do arquivo, mas quaisquer campos desejados pelo usuário.
Abaixo estão os comandos que mostram o uso do sort
com o comando find
para classificar a lista de arquivos com base em Data e Hora.
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, em seguida, imprimir o resultado como: Mês em que o arquivo foi acessado e, em seguida, o nome do arquivo. Desse resultado completo, aqui listamos as 11 principais 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 primeira coluna como chave, especificada por '-k1'
e, em seguida, classifica por Mês, conforme especificado por 'M'
à sua frente.
# 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 por Data
Aqui, mais uma vez, usamos o comando find
para encontrar todos os arquivos no diretório raiz, mas agora imprimiremos o resultado como: data em que o arquivo foi acessado pela última vez, hora em que o arquivo foi acessado pela última vez e, em seguida, o nome do arquivo. Desse resultado, selecionamos as 11 principais 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 sort abaixo classifica primeiro com base no último dígito do ano, depois classifica com base no último dígito do mês em ordem inversa e, finalmente, classifica com base no primeiro campo. Aqui, ‘1.8‘ significa a oitava coluna do primeiro campo e ‘n‘ à sua frente indica classificação numérica, enquanto ‘r‘ indica classificação em ordem inversa.
# 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 na Hora
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
Abaixo o comando 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 a mês, depois 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, ao ter algum conhecimento do comando sort, você pode ordenar quase qualquer listagem com base em qualquer campo e até mesmo em qualquer coluna desejada. Estas foram algumas dicas para ajudá-lo a ordenar arquivos com base na Data ou Hora. Você pode criar suas próprias dicas com base nessas. No entanto, se você tiver alguma outra dica interessante, você sempre pode mencioná-la em seus comentários.
Source:
https://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/