|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Bonjour,
Je lis ici souvent qu'on ne doit pas traiter des listes de fichier à l'aide de ls . Comment feriez vous pour recuperer la liste de fichiers triés par date de derniere modif sans passer par ls -t ( avec ou sans r ...) ? |
|
|
10
|
|
|
#2 |
|
Expert Confirmé Sénior
![]() francois Ingénieur systèmes et réseaux Inscription : juillet 2006 Messages : 3 538 ![]() |
le refus du tri dans le résultat de "ls" vient du fait que c'est une capture d'affichage et donc un traitement sur chaines de cratères ce qui est donc lent...
concrètement, vu les perfs des disques/machines actuelles cette restriction est faible. Mais l'usage veux qu'on évite de le faire pour une autre raison beaucoup plus pertinente celle là. C'est que la sélection de fichier par la commande ls ou encore les droits même en lecture sur le répertoire à traiter peut influencer grandement le résultat, sans parler des limites d'affichage, ou encore des limites en nombre de fichiers par répertoires selon les files systèmes etc... On cherche donc généralement à trouver un traitement par lot, ou par exemple la commande find, qui associée à l'option exec, ou encore dans une boucle permettra la réalisation d'un traitement par fichier correspondant à la recherche, chaque traitement étant alors unitaire, le risque d'effets de bords indésirable tend vers zéro. |
|
|
20
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 968 ![]() |
Citation:
Comme l'a déjà dit frp31, 'find' est en général plus approprié car il permet de traiter n'importe quel nom de fichier dans la directive '-exec'. Citation:
__________________
ɹǝsn *sıɹɐlos* |
||
|
|
30
|
|
|
#4 | ||||
|
Membre confirmé
![]() Développeur informatique Inscription : octobre 2006 Messages : 181 ![]() |
Le but de la recupération est evidement de traiter les fichiers en attente par ordre d'arrivée.
C'est fait avec un Code :
C'est juste un cas d'école que je soumets pour trouver des solutions "propres" pour tous. Personnellement je ne vois pas comment faire autrement, tout ce que je peux proposer c'est : Code :
|
||||
|
|
20
|
|
|
#5 | ||||
|
Membre Expert
![]() Inscription : juin 2007 Messages : 968 ![]() |
"ls -t" suffit, le -1 est redondant ici.
Ton deuxième exemple gère la plupart des noms de fichiers tordus, y compris ceux qui ont des guillemets anglais " dans leur nom. Le seul cas que je vois qui ne passerait sont les fichiers qui on une fin de ligne dans leur nom, mais c'est plutôt rare ... Code :
Code :
__________________
ɹǝsn *sıɹɐlos* |
||||
|
|
20
|
Copyright © 2000-2012 - www.developpez.com