Tout d'abord, je sais qu'il y a beaucoup de topics à ce sujet mais je n'ai pas trouvé la réponse à mon interrogation.
Je veux trouver le fichier txt le plus récemment édité dans une arborescence de dossier.
Mon arborescence se visualise comme ceci:
Pour l'exemple, les noms des fichiers comportent un nombre correspondant à leur ancienneté. 50 étant le plus ancien et donc 0 le plus récent. (c'est juste pour mieux voir dans l'exemple).
Il y a plusieurs méthodes pour trouver les fichiers les plus récents mais j'ai trouvé cette combinaison qui paraissait intéressante:
ls -gotR | grep .\txt$ |head -1
A noter que je lance cette commande dans le dossier 'DossierMere'
On a donc le paramète 't' pour ranger les fichiers selon leur date de modification et 'R' pour la récursivité. Après je prends juste les fichiers ayant une extension '.txt' et je n'affiche que le plus récent avec 'head'.
Le problème c'est la récursivité.
Pour moi récursif veut dire qu'il s'enfonce dans l'arborescence jusqu'au bout.
Néanmoins ici, au lieu de me sortir 'fichier1.txt' présent dans 'dossierA/dossierAa', il me sort 'fichier20.txt' qui se trouve dans 'dossierA'.
Donc observation, la recursivité ne s'enfonce que dans UN dossier et non pas 2 comme je le voudrai.
Avez vous déjà rencontré ce problème? Avez vous des idées pour faire fonctionner cette commande?
il ne faut pas parser la sortie de ls, c'est source d'erreurs parce que les noms de fichiers peuvent contenir n'importe quel caractère sauf / et le caractère NULL
Néanmoins, maintenant il me renvoie le fichier le plus vieux Il n'y a plus de problème concernant l’arborescence, il arrive bien à toute la parcourir, il ne reste plus qu'à "inverser" ce que l'on veut à savoir le fichier le plus récent.
Je regarde ça, et si vous avez une idée n'hésitez pas !
Concernant head/tail, le problème vient en fait du fait que je n'ai qu'une seule ligne de retour, donc quand je fais 'tail- n 1', il va bien m'afficher la dernière ligne mais vu qu'il n'y en a qu'une, et bien ce n'est pas très efficace
Renvoie TOUJOURS le plus récent mais quand je change le paramatre de 'FNR', si je le mets à 2, parfois il va me sortir le 2 ème fichier le plus récent, mais parfois il renvoie juste ".txt". Là, il faut donc mettre comme paramètre 3 et il me renvoie bien le 2ème fichier le plus récent.
Soit tu as un fichier qui se nomme « .txt», sinon faut regarder sans le AWK (je vois pas pourquoi AWK formaterai le nom), puis sans le sort pour essayer de comprendre ce qui formaterai le nom du fichier... Franchement je n'ai aucune idée
Concernant le p minuscule, c'est moi qui avait changé au profit du P majuscule car j'obtiens ce que je veux avec P:
avec p : "./2019/08/02.txt"
avec P : "2019/08/02.txt"
Et ça ne change rien, quand je change le parametre, il me renvoie donc "./.txt"
Sans le AWK... C'est un peu l'anarchie, il me sort les séquences de chiffres suivi du nom de fichier pour chaque fichier de mon arborescence.
Concernant mon bash, je suis sous 4.2.37 et ma distribution est une Wheezy.
Ma version de find est la 4.4.2.
Edit
En re vérifiant pour la 12ème fois, il y avait en effet un fichier caché ".txt".
Mais le problème est que ce fichier apparait par moments. Hier il n'y était probablement pas puisque ma commande fonctionnait bien avec le paramètre à 2.
La commande dans l'état actuel devrait fonctionner comme tu le souhaites maintenant (sauf s'il y a des noms de fichiers bien vicieux auxquel on aurait pas pensé).
Donc si le .txt se crée, c'est probablement du à autre chose
- Edité par KoaTao 2 août 2019 à 15:46:09
[bash] Trouver le fichier le plus récent
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
utiliser awk à la place de tail|cut
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique