IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Bash Trouver le fichier le plus anciennement accéder


Sujet :

Shell et commandes GNU

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 23
    Points : 22
    Points
    22
    Par défaut Bash Trouver le fichier le plus anciennement accéder
    Bonjour à tous,

    Je souhaites savoir s'il existe un moyen permettant de trouver le fichier qui a été accéder le plus anciennement dans un répertoire via la commande find.

    Merci d'avance

  2. #2
    Expert éminent sénior
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 511
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur système Unix - Linux

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 511
    Points : 11 307
    Points
    11 307
    Par défaut
    Bonjour,

    Pas directement d'un seul coup à ma connaissance, voir du côté de l' option atime de find :
    -atime n
    dernier accès au fichier il y a n*24 heures.
    http://man.developpez.com/man1/find/

  3. #3
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Bonjour,

    Non, find ne fait pas de tri...

    Pour le coup, même si certain vont avoir leurs cheveux qui se hérissent en lisant ça, la commande ls te permet de trié une liste de fichier selon le time qui t’intéresse...
    Donc , en gros la commande sera ls|grep|tail ou head:
    le ls pour le tri
    le grep pour le filtre sur le type de fichier
    et le tail ou head pour ne garder que la dernière ou première ligne selon l'ordre du tri choisis

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 589
    Points : 19 474
    Points
    19 474
    Par défaut
    si on me cherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ~ -type f -printf '%A@ %h%f\n' | sort -n -k1,1 | head -1 | cut -d ' ' -f2-
    find pour la liste
    sort pour trier
    head pour ne retenir que le premier
    cut pour ne conserver que le nom du fichier

    voilà, chacun fait ce qu'il a à faire.

    ls...

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Yop !
    Citation Envoyé par N_BaH Voir le message
    si on me cherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ~ -type f -printf '%A@ %h%f\n' | sort -n -k1,1 | head -1 | cut -d ' ' -f2-
    Chez moi c'est mieux avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ~ -type f -printf '%A@ %p\n' | sort -n -k1,1 | head -1 | cut -d ' ' -f2-
    sinon le dernier "/", celui qui sépare la fin du chemin du nom du fichier saute...

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut

    Ok, voici une version moins gourmande et plus rapide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find ~ -type f -printf '%p %A@\n' | awk '$NF < A || NR ==1 {C=$0;A=$NF}END{$0=C;NF--;print}'
    mais en fait, ton problème n'est pas totalement résolu car cela ne fonctionne pas dans tous les cas, je m'explique:
    Résultat selon la version avec awk:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ find ~ -type f -printf '%p %A@\n' | awk '$NF < A || NR ==1 {C=$0;A=$NF}END{$0=C;NF--;print}'
    /home/disedorgue/.vim/snippets/mako.snippets
    Résultat selon la version sort:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ find ~ -type f -printf '%A@ %p\n' | sort -n -k1,1 | head -1 | cut -d ' ' -f2-
    /home/disedorgue/.vim/snippets/autoit.snippets
    On pourrait croire que l'une des 2 est fausse, mais ce n'est pas le cas, voici les même commandes mais sans suppression du champs atime:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ find ~ -type f -printf '%A@ %p\n' | sort -n -k1,1 | head -1
    1247498354.0000000000 /home/disedorgue/.vim/snippets/autoit.snippets
    $ find ~ -type f -printf '%p %A@\n' | awk '$NF < A || NR ==1 {C=$0;A=$NF}END{$0=C;print}'
    /home/disedorgue/.vim/snippets/mako.snippets 1247498354.0000000000
    Ici, comme on peut le voir, les 2 fichiers on le même atime... (et oui, c'est possible)

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 919
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 919
    Points : 15 356
    Points
    15 356
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Ici, comme on peut le voir, les 2 fichiers on le même atime... (et oui, c'est possible)
    Perso, je pencherais plus pour un microscopique bug quelque part, car il me semble matériellement impossible d'avoir 2 fichiers enregistrés exactement à la même date : avec le second champ rempli de zéros deux fois de suite ça semble loufoque !

    Je n'arrive pas à trouver des infos sur cette histoire de atime, ctime, mtime, etc., et surtout savoir ce qui se cache dans la seconde partie des datas (après le point). J'dois mal m'y prendre...

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 309
    Points : 12 817
    Points
    12 817
    Par défaut
    Dans mon cas, je penche sur une archive:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    1247498354.0000000000 /home/disedorgue/.vim/snippets/autoit.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/cpp.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/c.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/html.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/javascript.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/java.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/mako.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/php.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/python.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/ruby.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/snippet.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/tcl.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/tex.snippets
    1247498354.0000000000 /home/disedorgue/.vim/snippets/zsh.snippets
    Sinon, en complément d'information, la version avec sort donnera dans ce cas le premier de la liste par ordre numérique (en gros de l'alphabétique qui tient compte de la casse).
    Dans le cas du awk, la version que j'ai donné ( $NF < A ) donnera celui qui est physiquement la première entrée du répertoire qui satisfait la condition.
    Ce qui ne veut pas dire que c'est la plus ancienne car un fichier supprimer laissera son entrée pour un autre.

Discussions similaires

  1. Trouver fichier le plus récent récursivement (avec filtre)
    Par Camaytoc dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/12/2011, 09h25
  2. Comment trouver le fichier le plus ancien/récent dans un répertoire ?
    Par YVESTA dans le forum Développement de jobs
    Réponses: 1
    Dernier message: 27/05/2011, 14h15
  3. Script batch trouver tous les fichiers de plus de X taille
    Par quietman dans le forum Windows Serveur
    Réponses: 7
    Dernier message: 15/02/2011, 08h59
  4. [CR 2008] Comment trouver la date la plus ancienne
    Par campia dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 09/12/2009, 15h09
  5. Trouver dans une colonne la valeur la plus ancienne.
    Par borislenium dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/06/2008, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo