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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    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
    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
    Membre Expert
    Avatar de Escapetiger
    Homme Profil pro
    Administrateur système Unix - Linux
    Inscrit en
    Juillet 2012
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Juillet 2012
    Messages : 1 559
    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/
    « Developpez.com est un groupe international de bénévoles dont la motivation est l'entraide au sens large » (incl. forums developpez.net)
    Club des professionnels en informatique

    Liste des balises BB

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    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 349
    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 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    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...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 127
    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 confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 349
    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 349
    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)

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