Linux - listing récursif par date

Linux - listing récursif par date - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 06-06-2013 à 15:43:02    

Bonjour
 
sous Linux en csh, j'ai un répertoire avec plein de fichiers et de sous-répertoires. Je souhaite afficher un listing (ou la fin de celui-ci) qui mettra les fichiers qui ont été modifiés le plus récemment.
J'ai tenté ceci :

ls -laRtr


Ces options me paraissent logiques :  

  • l : listing en long
  • a : aussi les fichiers cachés
  • R : récursif dans les sous répertoires
  • t : classement par date
  • r : classement inversé (les plus récents apparaissent en dernier)


Hélas cela ne marche pas:
ls -laR : les répertoires sont classés alphabétiquement, puis les fichiers (acollés à leur répertoire) aussi
ls -laRr : les  répertoires sont classés inverse alphabétiquement, puis les fichiers (acollés à leur répertoire) aussi
ls -laRtr : les fichiers sont classés dans l'ordre de date comme voulu (acollés à leur répertoire), mais par contre les répertoires sont disposés n'importe comment : le dernier répertoire apparaissant n'est pas celui changé où le fichier le plus récent existe
 
J'ai tenté alors avec un filtre pour garder que les fichiers (grep qui prend que les lignes commençant par '-'), puis tri par date sur la 6e colonne des mois :

ls -laR | grep ^- | sort -k6 -M


sachant qu'une ligne est représentée ainsi:

-rw-rw---- 1 nomuser group 7200 Jun 6 14:03 nomfichier


 
Ca trie les mois, mais pas le reste des dates (jours et heures). Et je ne sais pas faire de tri imbriqué comme sous Excel : colonne 6 (mois) en month, puis 7 (jour) en numérique, puis 8 (heure) en numérique.
 
Qqn a-t-il une solution ?
Merci

Reply

Marsh Posté le 06-06-2013 à 15:43:02   

Reply

Marsh Posté le 06-06-2013 à 15:45:19    

Tu peu pas utiliser bash ou sh comme tout le monde ? <_<, sinon un coup de man ls te donnera la solution :) (faut éditer les fichier de configuration)

Reply

Marsh Posté le 07-06-2013 à 09:36:26    

Le plus simple est pour moi le find, par contre si i y a trop de fichiers, je ne suis pas sur que ca passe :
 

Code :
  1. find REPERTOIRE -type f -exec ls -altr {} \+


 
En tout cas trier sur la date directement avec la sortie standard du ls me semble difficile car parfois il donne des heures, d'autres des dates avec années, sans année, etc. La encore le find pourrait t'aider avec le printf qui te permet de formater la sortie.

Reply

Marsh Posté le 07-06-2013 à 14:46:50    

Nukolau a écrit :

Le plus simple est pour moi le find, par contre si i y a trop de fichiers, je ne suis pas sur que ca passe :
 

Code :
  1. find REPERTOIRE -type f -exec ls -altr {} \+


 
En tout cas trier sur la date directement avec la sortie standard du ls me semble difficile car parfois il donne des heures, d'autres des dates avec années, sans année, etc. La encore le find pourrait t'aider avec le printf qui te permet de formater la sortie.


 
MERCI ! Avec le find, c'est exactement cela.  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed