web-dev-qa-db-fra.com

Trier les fichiers dans le répertoire par date de création (Naissance)

Dans mon dossier de téléchargement, j'ai beaucoup de fichiers. Il me faut d'abord un moyen de les classer par type, puis les deuxièmes fichiers avec le même type de classement deviennent du type que j'ai ajouté (ou peut dire téléchargé ou à la naissance (si je ne me trompe pas)) dans mon dossier Téléchargements. jetez un coup d'œil entrez la description du lien ici Dans mon répertoire de téléchargement, j'ai un fichier PDF, Zip, etc. lorsque je vais dans mon répertoire de téléchargement ) seconde, j’ai besoin que mes fichiers tar.gz aient en quelque sorte le moment où j’ai ajouté à ce répertoire.Par exemple, je suis à la recherche du cinquième fichier tar.gz au moment de la naissance.

3

Ma réponse précédente a commencé avec cette fausse déclaration:

Linux ne stocke pas l'heure de création du fichier

Oui - Le noyau Linux ne fournit pas d'API pour obtenir les horodatages de création à partir du système de fichiers.

Mais comme il est écrit dans wiki ext4, indiquez un horodatage de création de fichier:

ext4 ajoute également un support pour les horodatages créés par la date. Mais, comme le souligne Theodore Ts'o, s’il est facile d’ajouter un champ date-création supplémentaire dans l’inode (permettant ainsi techniquement de prendre en charge les horodatages créés avec la date dans ext4), il est plus difficile de modifier ou d’ajouter le système nécessaire. les appels, comme stat () (qui nécessiterait probablement une nouvelle version) et les différentes bibliothèques qui en dépendent (comme glibc).

Aussi comme répondu dans 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

Voilà qui est génial question/réponse comment trouver le tampon de création de fichier. Script écrit par @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
}

Ajoutez ce script à votre .bashrc.

Maintenant, en utilisant ce script, vous pouvez obtenir ce que vous voulez.

Allez dans le dossier dont vous voulez trier le contenu

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

Pour les fichiers tar.gz

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

Sources

2
c0rp