GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo encontrar recursivamente y enumerar los archivos por fecha en Linux

La razón principal por la que la mayoría de los usuarios de sistemas operativos eligen Linux sobre otros sistemas operativos es la libertad para explorar. Con Linux, está sujeto a algunas reglas del sistema operativo poco acopladas. El sistema operativo predefine algunas reglas estándar modificables para usar dentro de su entorno.

Una vez que te quites el abrigo de principiante, puedes salirte de estas reglas predeterminadas y crear las tuyas propias. Bajo Linux, el sistema operativo es tu fiel servidor y tú el amo.

Este caso no es viable en otras distribuciones de sistemas operativos ya que existen demasiadas abstracciones. Los sistemas operativos aquí son más de su asistente. Nunca se puede tener más poder que el sistema operativo, como en el caso de Linux. A medida que continúe construyendo su experiencia de usuario en un entorno de sistema operativo Linux, su curiosidad por el sistema operativo crecerá día a día. Siempre querrás saber qué se esconde aquí y qué más puedes hacer bajo su paraguas.

Trabajar con archivos y directorios en Linux

Un escenario de caso perfecto es su interacción diaria con archivos y carpetas en el entorno del sistema operativo Linux. Usar el sistema de archivos del sistema operativo Linux es más que solo crear, editar, modificar y eliminar los sistemas de archivos y carpetas del usuario. Cada acción vinculada con los archivos y carpetas/directorios del usuario en un entorno Linux deja una huella o huella digital del usuario. Es como entrar en una habitación para tocar e intercambiar elementos.

Si un propietario o cuidador de Linux administra esta habitación en la que ingresó, sabrá exactamente qué hizo y qué elementos tocó o intercambió. Linux tiene comandos útiles para ayudarnos a lograr tales resultados. Sabrá qué sucedió con los archivos y carpetas en su sistema operativo Linux e identificará estas acciones en función de cuándo ocurrieron.

En resumen, cuando se trata de archivos y directorios en un entorno de sistema operativo Linux, podemos crear una línea de tiempo de eventos para identificar modificaciones de archivos vulnerables a través de marcas de tiempo adjuntas a cada modificación. Como ventaja, sabrás si la modificación estuvo asociada a contenido malicioso a través de los logs del sistema generados.

Los comandos de Linux a utilizar

Canalizaremos algunos comandos simples para ayudarnos a comprender la implicación objetivada de este artículo. Primero debe iniciar su terminal y navegar por una ruta del sistema que sepa que tiene muchos archivos y directorios de carpetas. Para estar seguro y no jugar con los archivos de su sistema vulnerable, puede usar su directorio "Documentos" que generalmente está predefinido en el sistema operativo Linux. El siguiente comando debería llevarlo a este directorio "Documentos".

$ cd ~/Documents

Es un directorio popular con muchos archivos y subdirectorios. Otro directorio a usar para este artículo experimental es el directorio "Descargas". Es un lugar donde nunca se perderá los archivos descargados y otros subdirectorios.

$ cd ~/Downloads

Para iniciar este experimento, necesitamos algunos resultados de muestra identificables de nuestra terminal. Teclearemos una cadena de comando en nuestra terminal que nos permitirá listar los archivos activos y sus subdirectorios asociados. Además, cada elemento de la salida resultante de este comando se vinculará con una marca de tiempo que apunta al último intento de modificación en el archivo, directorio o subdirectorio asociado.

La cadena de comando a usar es la siguiente:

$ find . -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d' ' -f2-

La siguiente captura de pantalla es el resultado del uso de la cadena de comando anterior.

Desde un punto de vista analítico, la pantalla inferior de la salida del comando representa los elementos modificados recientemente en su directorio de trabajo principal. La lista de salida puede ser larga, dependiendo de los archivos y carpetas que tenga en su máquina. Desplazarse hacia arriba en el terminal de salida revela archivos más antiguos y modificaciones de carpetas. En resumen, tenemos un resultado que clasifica las modificaciones de archivos y carpetas más antiguas hasta las modificaciones más recientes.

Como ha notado, la cadena de comando anterior que pegó en su terminal tiene tres argumentos de comando importantes. Necesitamos entender lo que hace cada uno de ellos.

Buscar

El comando "buscar" es el primero que se ejecuta desde la cadena de comandos. Tiene el único objetivo de enumerar recursivamente los archivos y directorios activos en su directorio de trabajo principal. Él "." El argumento que sigue al argumento "buscar" apunta este comando al directorio de trabajo actual. Si no está seguro del directorio en el que se encuentra; puede ingresar el comando "pwd" en su terminal. Imprimirá la ruta al directorio en el que se encuentra actualmente.

Él "." argumento se traduce como la salida del comando "pwd". Hace que sea más fácil encontrar los archivos y directorios de su directorio de trabajo actual. El siguiente argumento en la cadena de comando es "-printf". Es una bandera para un argumento de impresión. Imprime los archivos y directorios en su directorio de trabajo actual en un formato específico. El formato que toma se especifica mediante el argumento “%T@%t%p\n”. Es el argumento del comando que le sigue inmediatamente.

La porción '%T@' de este argumento representa el tiempo de época. Por definición, epoch time o Unix epoch es la marca de tiempo del 1 de enero de 1970. Se representa como 00:00:00 UTC. La salida en su terminal toma este formato para representar las fechas de modificación asociadas con los archivos y directorios enumerados. La porción '%t' del argumento ahora toma el formato de tiempo de época para mostrar la última marca de tiempo de modificación asociada con los archivos y directorios enumerados.

Dependiendo de su distribución o tipo de Linux, es posible que la salida del terminal no muestre el tiempo de época asociado con la lista de salida de archivos modificados. Esta declaración es una prueba del resultado de mi parte.

La porción '%p' del argumento genera los nombres de los archivos mostrados en ese directorio de trabajo actual. Finalmente, la porción '/n' del argumento tiene el propósito de un carácter de nueva línea. Después de cada listado sucesivo de un archivo modificado, este carácter de nueva línea toma el cursor de la pantalla y salta la siguiente pantalla de archivo a una nueva línea en la pantalla del terminal. Nos facilita asociar cada archivo mostrado de manera diferente.

Otro enfoque para trabajar con la cadena de comando indicada anteriormente es reemplazar la parte '%t' del argumento "%T@%t%p\n" con '%c'. La cadena de comando resultante debería ser similar a la siguiente:

$ find . -printf '%T@ %c %p\n' | sort -k 1 -n | cut -d' ' -f2-

El resultado de ejecutar esta cadena de comando debería producir un resultado similar a la siguiente captura de pantalla.

La observación de la captura de pantalla anterior revela con atención la siguiente observación. La lista de salida de archivos en el directorio de trabajo actual se muestra con una "hora del último cambio de estado" en lugar de la "hora de modificación". Es el efecto de reemplazar '%c' con '%t' en "%T@%t%p\n". Este último comando imprime los cambios de permisos asociados con la lista de archivos de salida. Es posible que el contenido de los archivos no cambie, pero sí lo hacen los metadatos asociados con ellos.

En esta etapa, los resultados de salida no siguen ningún orden cronológico ya que aún debemos abordar el comando de ordenación. Primero se imprime la marca de tiempo de la modificación, seguida del nombre del archivo asociado.

Ordenar

Este argumento de comando tiene tres parámetros, a saber, '-k', '1' y 'n'. El comando ordenar es responsable del orden en que aparece la salida de la lista de archivos en nuestras pantallas. En este caso, la fecha de modificación se imprime primero, seguida de la ruta del archivo o directorio modificado. La parte '-k' de este argumento de comando indica la posición de inicio para comenzar el proceso de clasificación.

La porción '-k' del argumento del comando de clasificación posee una pregunta respondida por la porción '1' del mismo argumento. En este caso, el proceso de clasificación comienza desde la primera columna como se indica por '1'. El argumento del comando sort también es responsable de que el archivo modificado más reciente esté al final de la lista y el más antiguo al principio. La porción '-n' del argumento es responsable de la precisión numérica del tiempo con puntos decimales.

Si usa '-nr' en lugar de '-n', la salida de la cadena de comando tendrá los archivos y directorios recién modificados en la parte superior de la salida del terminal y las modificaciones de archivos antiguos en la parte inferior. Invierte el orden de clasificación de la salida del terminal.

Cortar

El objetivo principal del argumento del comando "cortar" es organizar la salida de nuestra terminal de forma ordenada. Las opciones '-d' y ' ' de este argumento de comando se combinan para generar espacios en blanco y luego cortan la impresión de detalles del contenido del archivo que podría tratar de superar estos espacios en blanco.

Con esta cadena de comando simple, puede imprimir recursivamente los archivos en su directorio de trabajo actual, y cada salida vincula dichos archivos a sus fechas de modificación.

Opciones de comandos alternativos

Podría argumentar que el comando "ls -lrt" enumera perfectamente todos los archivos dentro de una ruta de directorio activo en su sistema operativo Linux, desde el más antiguo para modificar hasta el más nuevo. Por otro lado, este comando no considera el contenido del archivo existente en las subcarpetas. Si la lista de subdirectorios no es su objetivo, puede agregar el argumento "-type f" a la cadena de comando. Considere la siguiente modificación del comando.

$ find . -type f -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Usar el argumento de comando "-type d" tendrá un efecto opuesto al comando anterior. Su terminal solo generará directorios modificados desde el más antiguo hasta el más nuevo. Considere su implicación de la siguiente manera:

$ find . -type d -printf '%T@ %t %p\n' | sort -k 1 -n | cut -d ' ' -f2-

Nota final

Ahora está familiarizado con el tutorial de impresión recursiva de archivos y directorios en su directorio de trabajo actual con el conocimiento adicional de saber cuándo se modificaron por última vez en función de sus marcas de tiempo asociadas.

A partir de este conocimiento, tiene la capacidad de componer una línea de tiempo de eventos que revela cronológicamente el orden de modificación de archivos y directorios junto con la ruta a su ubicación de almacenamiento.


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

  2. Cómo buscar y eliminar directorios recursivamente en Linux

  3. Encuentra los archivos y directorios más grandes en Linux

  4. Linux:¿obtener archivos para la fecha actual en Linux?

  5. Cómo usar el comando find de Linux para buscar archivos

Cómo encontrar y eliminar archivos duplicados en Linux

Cómo encontrar archivos con el comando fd en Linux

Cómo encontrar archivos duplicados en Linux y eliminarlos

Cómo listar archivos recursivamente en Linux

Cómo encontrar la fecha y hora de instalación del sistema operativo Linux

Cómo encontrar la lista de repositorios instalados en Linux