Ordenar archivos en el directorio por fecha de creación (nacimiento)

En mi carpeta de descargas tengo muchos archivos. Primero necesito una forma de organizarlos por tipo de archivo. Los archivos con el mismo tipo de configuración se convierten en el tipo que agregué (o puedo decir descargado o nacimiento (si no me equivoco)) a mi carpeta de descargas. Por favor, eche un vistazo. Ingrese la descripción del enlace aquí. En mi directorio de descargas, tengo pdf, zip, etc. Cuando voy a mi directorio de descargas, primero quiero ver mis tar.gz alrededor (organizar por tipo), segundo, necesito mi tar. Los archivos gz tienen una especie de tiempo cuando agregué a este directorio. Por ejemplo, estoy buscando el quinto archivo tar.gz más joven para la hora de nacimiento.

Mi respuesta anterior se inició con esta statement incorrecta:

Linux no almacena el tiempo de creación de archivos

Sí, el kernel de Linux no proporciona API para obtener sellos de tiempo de creación del sistema de archivos.

Pero como está escrito en wiki ext4, proporcione marcas de tiempo de creación de archivos:

ext4 también agrega soporte para las marcas de tiempo creadas por fecha. Pero, como señala Theodore Ts’o, si bien es fácil agregar un campo de fecha de creación adicional en el inodo (por lo tanto, técnicamente se habilita el soporte para las marcas de tiempo creadas por fecha en ext4), es más difícil modificar o agregar el sistema necesario llamadas, como stat () (que probablemente requeriría una nueva versión) y las diversas bibliotecas que dependen de ellas (como glibc).

También como respuesta en unix.stackexchange

Several file systems store the file creation time, although there is no standard name for this field: - ufs2 → st_birthtime - zfs → crtime - ext4 → crtime - btrfs → otime - jfs → di_otime 

Aquí hay una gran pregunta / respuesta sobre cómo encontrar el sello de creación de archivos. Guión escrito por @terdon:

 get_crtime() { for target in "${@}"; do inode=$(ls -di "${target}" | cut -d ' ' -f 1) fs=$(df --output=source "${target}" | tail -1) crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null | grep -oP 'crtime.*--\s*\K.*') printf "%s\t%s\n" "${target}" "${crtime}" done } 

Agrega este script a tu .bashrc.

Ahora usando este script puedes obtener lo que quieres.

Vaya a la carpeta que contenido quiere ordenar

 $ cd ~/Downloads $ get_crtime * | sed -r 's/\s+/ /g' | cut -d" " -f1,3,4,6 | sort -k2M -k3,4n 

Para archivos tar.gz

 $ get_crtime *.tar.gz | sed -r 's/\s+/ /g' | cut -d" " -f1,3,4,6 | sort -k2M -k3,4n 

Fuentes

  • Cómo encontrar la fecha de creación.
  • Donde encontré guion
  • ¿Qué sistemas de archivos en Linux almacenan el tiempo de creación?
  • Wiki ext4
  • Entendiendo las marcas de tiempo ext4