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
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
Bonjour,
Pas directement d'un seul coup à ma connaissance, voir du côté de l' option atime de find :
http://man.developpez.com/man1/find/-atime n
dernier accès au fichier il y a n*24 heures.
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
si on me cherche :
find pour la liste
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-
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...
Yop !
Chez moi c'est mieux avecsinon le dernier "/", celui qui sépare la fin du chemin du nom du fichier saute...
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-
Ok, voici une version moins gourmande et plus rapide:
mais en fait, ton problème n'est pas totalement résolu car cela ne fonctionne pas dans tous les cas, je m'explique:
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}'
Résultat selon la version avec awk:
Résultat selon la version sort:
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
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 $ find ~ -type f -printf '%A@ %p\n' | sort -n -k1,1 | head -1 | cut -d ' ' -f2- /home/disedorgue/.vim/snippets/autoit.snippets
Ici, comme on peut le voir, les 2 fichiers on le même atime... (et oui, c'est possible)
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
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...
Dans mon cas, je penche sur une archive:
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).
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
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager