Je voudrais construire une commande Linux pour répertorier tous les fichiers (avec leurs chemins d'accès complets) dans un répertoire spécifique (et sous-répertoires) classés par temps d'accès.
ls peut commander par temps d'accès, mais ne donne pas le chemin complet. find donne le chemin complet, mais le seul contrôle que vous avez sur le temps d'accès est de spécifier une plage avec -atime N (consulté il y a au moins 24 * N heures), ce qui n'est pas ce que je veux.
Existe-t-il un moyen de commander par temps d'accès et d'obtenir le chemin complet en une fois? Je pourrais simplement écrire un script, mais il semble qu'il devrait y avoir un moyen de le faire avec les programmes Linux standard.
find . -type f -exec ls -l {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7
Cela trouvera tous les fichiers et les triera par date, puis par heure. Vous pouvez ensuite utiliser awk
ou cut
pour extraire les dates et le nom des fichiers du ls -l
production
tu pourrais essayer:
ls -l $(find /foo/bar -type f )
ls
pour atteindre votre objectif.find
cmdfind . -type f | xargs ls -ldt
devrait faire l'affaire tant qu'il n'y a pas autant de fichiers que vous frappez la commande comme limite d'argument et générez 2 instances de ls.
pwd | xargs -I % find % -type f
find . -type f -exec ls -l --full-time {} \; 2> /dev/null | sort -t' ' -k +6,6 -k +7,7
La réponse d'Alex n'a pas fonctionné pour moi car j'avais des fichiers de plus d'un an et le tri a été foiré. Ce qui précède ajoute le paramètre --full-time qui nuétalise les valeurs de date/heure et les rend triables quel que soit leur âge.