Cómo encontrar y ordenar archivos según la fecha y hora de modificación en Linux

Generalmente, tenemos la costumbre de guardar mucha información en forma de archivos en nuestro sistema. Algunos archivos están ocultos, otros se mantienen en una carpeta separada creada para nuestra comodidad de comprensión, mientras que algunos permanecen tal cual. Pero, todo este material llena nuestros directorios, generalmente el escritorio, haciéndolo ver como un desorden. Pero, el problema surge cuando necesitamos buscar un archivo en particular modificado en una fecha y hora específicas en esta enorme colección.

Find and Sort Files by Date and Time in Linux

Las personas cómodas con las interfaces gráficas de usuario pueden encontrarlo usando el Administrador de archivos, que lista los archivos en formato de lista larga, facilitando la identificación de lo que queremos, pero aquellos usuarios que tienen la costumbre de las pantallas negras, o incluso cualquiera que trabaje en servidores que carecen de interfaces gráficas de usuario, desearían un comando simple o un conjunto de comandos que pudieran facilitar su búsqueda.

La verdadera belleza de Linux se muestra aquí, ya que Linux tiene una colección de comandos que, si se usan por separado o juntos, pueden ayudar a buscar un archivo, o clasificar una colección de archivos según su nombre, fecha de modificación, hora de creación, o incluso cualquier filtro que puedas pensar en aplicar para obtener tu resultado.

Aquí, revelaremos la verdadera fuerza de Linux examinando un conjunto de comandos que pueden ayudar a clasificar un archivo o incluso una lista de archivos por Fecha y Hora.

Utilidades de Linux para Clasificar Archivos en Linux

Algunas utilidades básicas de línea de comandos de Linux que son suficientes para clasificar un directorio según la Fecha y la Hora son:

el comando ls

ls – La utilidad de listar contenido de directorio, esta herramienta puede listar los archivos y directorios e incluso puede listar toda la información de estado sobre ellos incluyendo: fecha y hora de modificación o acceso, permisos, tamaño, propietario, grupo, etc.

Ya hemos cubierto muchos artículos sobre el comando ls de Linux y el comando sort, puedes encontrarlos a continuación:

  1. Aprende el comando ls con 15 ejemplos básicos
  2. Aprende 7 comandos avanzados de ls con ejemplos
  3. 15 preguntas útiles de entrevista sobre el comando ls en Linux

sort

sort – Este comando puede ser usado para ordenar la salida de cualquier búsqueda por cualquier campo o cualquier columna particular del campo.

Ya hemos cubierto dos artículos sobre el comando sort de Linux, puedes encontrarlos a continuación:

  1. 14 ejemplos del comando ‘sort’ en Linux – Parte 1
  2. 7 ejemplos útiles del comando ‘sort’ en Linux – Parte 2

Estos comandos son en sí mismos comandos muy poderosos para dominar si trabajas en pantallas negras y tienes que lidiar con muchos archivos, solo para obtener el que deseas.

Algunas formas de ordenar archivos por fecha y hora

A continuación se muestra la lista de comandos para ordenar según la fecha y la hora.

1. Listar archivos basados en el tiempo de modificación

El siguiente comando lista archivos en formato de lista larga y ordena los archivos según el tiempo de modificación, el más nuevo primero. Para ordenar en orden inverso, usa el interruptor '-r' con 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 archivos basados en el tiempo de último acceso

Listado de archivos en el directorio basado en el tiempo de último acceso, es decir, basado en el tiempo en que se accedió por última vez al archivo, no 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 archivos basados en el tiempo de última modificación

Listado de archivos en el directorio basado en el tiempo de última modificación de la información de estado del archivo, o el 'ctime'. Este comando listaría primero el archivo cuya información de estado como: propietario, grupo, permisos, tamaño, etc. ha sido cambiada recientemente.

# 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
...

Si se utiliza el interruptor '-a' con los comandos anteriores, pueden listar y ordenar incluso los archivos ocultos en el directorio actual, y el interruptor '-r' lista la salida en orden inverso.

Para una clasificación más profunda, como la clasificación en Salida del comando find, sin embargo, también se puede usar ls, pero allí 'sort' resulta más útil ya que la salida puede no tener solo el nombre del archivo, sino cualquier campo deseado por el usuario.

Los siguientes comandos muestran el uso de sort con el comando find para ordenar la lista de archivos según la fecha y la hora.

Para obtener más información sobre el comando find, sigue este enlace: 35 Practical Examples of ‘find’ Command in Linux

4. Ordenar archivos según el mes

Aquí, utilizamos el comando find para buscar todos los archivos en el directorio raíz (‘/’) y luego imprimir el resultado como: mes en que se accedió el archivo y luego el nombre del archivo. De ese resultado completo, aquí listamos las primeras 11 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

El siguiente comando ordena la salida utilizando la clave como primer campo, especificado por '-k1' y luego ordena por mes como se especifica por 'M' antes de él.

# 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. Ordenar archivos según la fecha

Aquí, nuevamente utilizamos el comando find para buscar todos los archivos en el directorio raíz, pero ahora imprimiremos el resultado como: última fecha en que se accedió el archivo, última hora en que se accedió el archivo y luego el nombre del archivo. De eso, tomamos las primeras 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

El siguiente comando de ordenamiento primero ordena según el último dígito del año, luego ordena según el último dígito del mes en orden inverso y finalmente ordena según el primer campo. Aquí, ‘1.8‘ significa la octava columna del primer campo y ‘n’ antes de él significa orden numérico, mientras que ‘r’ indica orden inverso.

# 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. Ordenar archivos según la hora

Aquí, nuevamente usamos el comando find para listar los 11 archivos principales en el directorio raíz e imprimir el resultado en el formato: última vez que se accedió al archivo y luego el nombre del archivo.

# 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

El siguiente comando ordena la salida basada en la primera columna del primer campo de la salida, que es el primer dígito de la 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 la salida de ls -l basada en la fecha

Este comando ordena la salida del comando 'ls -l' basado en el sexto campo por mes, luego basado en el séptimo campo que es la fecha, numéricamente.

# 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

Conclusión

De igual manera, teniendo algún conocimiento del comando sort, puedes ordenar casi cualquier lista basada en cualquier campo e incluso en cualquier columna que desees. Estos fueron algunos trucos para ayudarte a ordenar archivos basados en la Fecha o la Hora. Puedes crear tus propios trucos basados en estos. Sin embargo, si tienes algún otro truco interesante, siempre puedes mencionarlo en tus comentarios.

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