Je cherche un truc pour dater mes dossiers.
Sauf qu'un dossier peut avoir une date plus vielle que les fichiers
qu'il contient.
Je me demande donc comment chercher dans un dossier donné quels sont les
fichiers les plus récents.
J'ai tenté un find -mtime, mais il faut alors chercher mtime -1, puis
mtime -2, ... sinon j'avais pensé un ls -lR, mais il faut après faire le
tri... Bref je suppose qu'il y a un truc :)
Merci d'avance
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas
Nicolas MICHEL wrote in message <1gx4dem.yucm3w1bd680cN%:
Je cherche un truc pour dater mes dossiers. Sauf qu'un dossier peut avoir une date plus vielle que les fichiers qu'il contient. Je me demande donc comment chercher dans un dossier donné quels sont les fichiers les plus récents.
J'ai tenté un find -mtime, mais il faut alors chercher mtime -1, puis mtime -2, ... sinon j'avais pensé un ls -lR, mais il faut après faire le tri... Bref je suppose qu'il y a un truc :)
Il y a l'option -t de ls pour trier par date de dernière modification. Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et répertoires) par ordre de modification, et « *(om[1]) » se développe en le fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour utiliser le ctime plutôt que le mtime.
Nicolas MICHEL wrote in message
<1gx4dem.yucm3w1bd680cN%Nicolas.MICHEL@BonBon.net>:
Je cherche un truc pour dater mes dossiers.
Sauf qu'un dossier peut avoir une date plus vielle que les fichiers
qu'il contient.
Je me demande donc comment chercher dans un dossier donné quels sont les
fichiers les plus récents.
J'ai tenté un find -mtime, mais il faut alors chercher mtime -1, puis
mtime -2, ... sinon j'avais pensé un ls -lR, mais il faut après faire le
tri... Bref je suppose qu'il y a un truc :)
Il y a l'option -t de ls pour trier par date de dernière modification.
Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et
répertoires) par ordre de modification, et « *(om[1]) » se développe en le
fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour
utiliser le ctime plutôt que le mtime.
Nicolas MICHEL wrote in message <1gx4dem.yucm3w1bd680cN%:
Je cherche un truc pour dater mes dossiers. Sauf qu'un dossier peut avoir une date plus vielle que les fichiers qu'il contient. Je me demande donc comment chercher dans un dossier donné quels sont les fichiers les plus récents.
J'ai tenté un find -mtime, mais il faut alors chercher mtime -1, puis mtime -2, ... sinon j'avais pensé un ls -lR, mais il faut après faire le tri... Bref je suppose qu'il y a un truc :)
Il y a l'option -t de ls pour trier par date de dernière modification. Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et répertoires) par ordre de modification, et « *(om[1]) » se développe en le fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour utiliser le ctime plutôt que le mtime.
Nicolas.MICHEL
Nicolas George <nicolas$ wrote:
Il y a l'option -t de ls pour trier par date de dernière modification.
Effectivement, mais il ne se combine pas avec l'option ls -R, donc un dossier plus vieux contennant un fichie plus récent aparaitra après.
Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et répertoires) par ordre de modification, et « *(om[1]) » se développe en le fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour utiliser le ctime plutôt que le mtime.
Ah, bon, après un peu de mal j'ai finit par trouver ça : http://www.rayninfo.co.uk/tips/zshtips.html Qui me donne une idée de ce que tu m'explique. Mais le résultat ne semble pas cohérent, je ne comprends pas ce qui se passe au juste.
par ex. la commande ls *(om[1]) me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si je sais lire.
ls -l **/*(om[1]) parce que ça a l'air plus proche de ce que je veux, mais logiquement ls -l **/*(om[1,3]) devrait me sortir 3 résultats, ce qui n'est pas le cas. ?
Merci beaucoup :) -- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
Nicolas George <nicolas$george@salle-s.org> wrote:
Il y a l'option -t de ls pour trier par date de dernière modification.
Effectivement, mais il ne se combine pas avec l'option ls -R, donc un
dossier plus vieux contennant un fichie plus récent aparaitra après.
Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et
répertoires) par ordre de modification, et « *(om[1]) » se développe en le
fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour
utiliser le ctime plutôt que le mtime.
Ah, bon, après un peu de mal j'ai finit par trouver ça :
http://www.rayninfo.co.uk/tips/zshtips.html
Qui me donne une idée de ce que tu m'explique.
Mais le résultat ne semble pas cohérent, je ne comprends pas ce qui se
passe au juste.
par ex. la commande
ls *(om[1])
me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si
je sais lire.
ls -l **/*(om[1])
parce que ça a l'air plus proche de ce que je veux, mais logiquement
ls -l **/*(om[1,3])
devrait me sortir 3 résultats, ce qui n'est pas le cas. ?
Merci beaucoup :)
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas
Il y a l'option -t de ls pour trier par date de dernière modification.
Effectivement, mais il ne se combine pas avec l'option ls -R, donc un dossier plus vieux contennant un fichie plus récent aparaitra après.
Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et répertoires) par ordre de modification, et « *(om[1]) » se développe en le fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour utiliser le ctime plutôt que le mtime.
Ah, bon, après un peu de mal j'ai finit par trouver ça : http://www.rayninfo.co.uk/tips/zshtips.html Qui me donne une idée de ce que tu m'explique. Mais le résultat ne semble pas cohérent, je ne comprends pas ce qui se passe au juste.
par ex. la commande ls *(om[1]) me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si je sais lire.
ls -l **/*(om[1]) parce que ça a l'air plus proche de ce que je veux, mais logiquement ls -l **/*(om[1,3]) devrait me sortir 3 résultats, ce qui n'est pas le cas. ?
Merci beaucoup :) -- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
Nicolas George
Nicolas MICHEL wrote in message <1gx4f8f.a8um8tnw8luaN%:
ls *(om[1]) me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si je sais lire.
Essaie avec ls -d, ou bien avec *(.om[1]) : l'un affiche les répertoire comme des répertoires et pas leur contenu, l'autre ne liste que les fichiers réguliers.
Nicolas MICHEL wrote in message
<1gx4f8f.a8um8tnw8luaN%Nicolas.MICHEL@BonBon.net>:
ls *(om[1])
me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si
je sais lire.
Essaie avec ls -d, ou bien avec *(.om[1]) : l'un affiche les répertoire
comme des répertoires et pas leur contenu, l'autre ne liste que les fichiers
réguliers.
Nicolas MICHEL wrote in message <1gx4f8f.a8um8tnw8luaN%:
ls *(om[1]) me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si je sais lire.
Essaie avec ls -d, ou bien avec *(.om[1]) : l'un affiche les répertoire comme des répertoires et pas leur contenu, l'autre ne liste que les fichiers réguliers.
Fred
Nicolas George <nicolas$ wrote:
Il y a l'option -t de ls pour trier par date de dernière modification.
Effectivement, mais il ne se combine pas avec l'option ls -R, donc un dossier plus vieux contennant un fichie plus récent aparaitra après.
Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et répertoires) par ordre de modification, et « *(om[1]) » se développe en le fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour utiliser le ctime plutôt que le mtime.
Ah, bon, après un peu de mal j'ai finit par trouver ça : http://www.rayninfo.co.uk/tips/zshtips.html Qui me donne une idée de ce que tu m'explique. Mais le résultat ne semble pas cohérent, je ne comprends pas ce qui se passe au juste.
par ex. la commande ls *(om[1]) me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si je sais lire.
ls -l **/*(om[1]) parce que ça a l'air plus proche de ce que je veux, mais logiquement ls -l **/*(om[1,3]) devrait me sortir 3 résultats, ce qui n'est pas le cas. ?
Merci beaucoup :)
Je crois que tu auras plus vite fait d'écrire cette commande en C.
Fred
Nicolas George <nicolas$george@salle-s.org> wrote:
Il y a l'option -t de ls pour trier par date de dernière modification.
Effectivement, mais il ne se combine pas avec l'option ls -R, donc un
dossier plus vieux contennant un fichie plus récent aparaitra après.
Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et
répertoires) par ordre de modification, et « *(om[1]) » se développe en le
fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour
utiliser le ctime plutôt que le mtime.
Ah, bon, après un peu de mal j'ai finit par trouver ça :
http://www.rayninfo.co.uk/tips/zshtips.html
Qui me donne une idée de ce que tu m'explique.
Mais le résultat ne semble pas cohérent, je ne comprends pas ce qui se
passe au juste.
par ex. la commande
ls *(om[1])
me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si
je sais lire.
ls -l **/*(om[1])
parce que ça a l'air plus proche de ce que je veux, mais logiquement
ls -l **/*(om[1,3])
devrait me sortir 3 résultats, ce qui n'est pas le cas. ?
Merci beaucoup :)
Je crois que tu auras plus vite fait d'écrire cette commande en C.
Il y a l'option -t de ls pour trier par date de dernière modification.
Effectivement, mais il ne se combine pas avec l'option ls -R, donc un dossier plus vieux contennant un fichie plus récent aparaitra après.
Sinon, avec zsh, « *(ot) » se développer en la liste des fichiers (et répertoires) par ordre de modification, et « *(om[1]) » se développe en le fichier (ou répertoire) le plus récemment modifié ; on peut utiliser oc pour utiliser le ctime plutôt que le mtime.
Ah, bon, après un peu de mal j'ai finit par trouver ça : http://www.rayninfo.co.uk/tips/zshtips.html Qui me donne une idée de ce que tu m'explique. Mais le résultat ne semble pas cohérent, je ne comprends pas ce qui se passe au juste.
par ex. la commande ls *(om[1]) me sort plusieurs résultats, alors que c'est sencé n'en sortir qu'un, si je sais lire.
ls -l **/*(om[1]) parce que ça a l'air plus proche de ce que je veux, mais logiquement ls -l **/*(om[1,3]) devrait me sortir 3 résultats, ce qui n'est pas le cas. ?
Merci beaucoup :)
Je crois que tu auras plus vite fait d'écrire cette commande en C.
Fred
Nicolas.MICHEL
Fred wrote:
Je crois que tu auras plus vite fait d'écrire cette commande en C.
C possible, en effêt, pour qui pratique le C.
Par contre je pratique le shell. Et pour ce cas précis, le zsh semble bien supérieur aux autres shell, pour autant qu'on comprennent ses options et fonctions... D'où ma question. Notez que si vous avez un lien vers un tutorial ou truc du genre, je suis prenneur.
Merci :) -- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
Fred <fred@work.com> wrote:
Je crois que tu auras plus vite fait d'écrire cette commande en C.
C possible, en effêt, pour qui pratique le C.
Par contre je pratique le shell. Et pour ce cas précis, le zsh semble
bien supérieur aux autres shell, pour autant qu'on comprennent ses
options et fonctions... D'où ma question.
Notez que si vous avez un lien vers un tutorial ou truc du genre, je
suis prenneur.
Merci :)
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas
Je crois que tu auras plus vite fait d'écrire cette commande en C.
C possible, en effêt, pour qui pratique le C.
Par contre je pratique le shell. Et pour ce cas précis, le zsh semble bien supérieur aux autres shell, pour autant qu'on comprennent ses options et fonctions... D'où ma question. Notez que si vous avez un lien vers un tutorial ou truc du genre, je suis prenneur.
Merci :) -- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
Pascal Bourguignon
(Nicolas MICHEL) writes:
Bonjour
Je cherche un truc pour dater mes dossiers. Sauf qu'un dossier peut avoir une date plus vielle que les fichiers qu'il contient. Je me demande donc comment chercher dans un dossier donné quels sont les fichiers les plus récents.
J'ai tenté un find -mtime, mais il faut alors chercher mtime -1, puis mtime -2, ... sinon j'avais pensé un ls -lR, mais il faut après faire le tri... Bref je suppose qu'il y a un truc :)
Merci d'avance
1- unix ne mémorise pas la date de création.
2- quand on modifie un fichier, on ne modifie pas le répertoire dans lequel il se trouve.
Tu n'y coupe pas, si tu veux savoir quel est le fichier modifié en dernier ("le plus récent"), il faut comparer sa date de modification avec celles de tous les autres. Si tu dois le faire de façon récursive, gnu find est le mieux (car il ne triera pas inutilement les fichiers).
Je cherche un truc pour dater mes dossiers.
Sauf qu'un dossier peut avoir une date plus vielle que les fichiers
qu'il contient.
Je me demande donc comment chercher dans un dossier donné quels sont les
fichiers les plus récents.
J'ai tenté un find -mtime, mais il faut alors chercher mtime -1, puis
mtime -2, ... sinon j'avais pensé un ls -lR, mais il faut après faire le
tri... Bref je suppose qu'il y a un truc :)
Merci d'avance
1- unix ne mémorise pas la date de création.
2- quand on modifie un fichier, on ne modifie pas le répertoire dans
lequel il se trouve.
Tu n'y coupe pas, si tu veux savoir quel est le fichier modifié en
dernier ("le plus récent"), il faut comparer sa date de modification
avec celles de tous les autres. Si tu dois le faire de façon
récursive, gnu find est le mieux (car il ne triera pas inutilement les
fichiers).
Je cherche un truc pour dater mes dossiers. Sauf qu'un dossier peut avoir une date plus vielle que les fichiers qu'il contient. Je me demande donc comment chercher dans un dossier donné quels sont les fichiers les plus récents.
J'ai tenté un find -mtime, mais il faut alors chercher mtime -1, puis mtime -2, ... sinon j'avais pensé un ls -lR, mais il faut après faire le tri... Bref je suppose qu'il y a un truc :)
Merci d'avance
1- unix ne mémorise pas la date de création.
2- quand on modifie un fichier, on ne modifie pas le répertoire dans lequel il se trouve.
Tu n'y coupe pas, si tu veux savoir quel est le fichier modifié en dernier ("le plus récent"), il faut comparer sa date de modification avec celles de tous les autres. Si tu dois le faire de façon récursive, gnu find est le mieux (car il ne triera pas inutilement les fichiers).
Je me demande donc comment chercher dans un dossier donné quels sont les fichiers les plus récents.
S'il n'y a pas trop de fichiers :
find . -type f -print | xargs ls -t | head
Nicolas.MICHEL
Laurent Wacrenier wrote:
Nicolas MICHEL écrit:
Je me demande donc comment chercher dans un dossier donné quels sont les fichiers les plus récents.
S'il n'y a pas trop de fichiers :
find . -type f -print | xargs ls -t | head
Ah, bin selon ce que j'ai testé ça ne passe pas avec les nom comportants des espaces. ça ne serait pas plutôt ceci : find . -type f -print0 |xargs -0 ls -t | head
A propos du "trop grand nombre de fichiers", on peut dans ce cas faire :
find . -type f -fprintf /tmp/findtemp "%TY%Tm%Td %TT %pn" 2>/dev/null sort -o /tmp/sorttemp -r /temp/findtemp head /tmp/sorttemp rm /tmp/sorttemp /tmp/findtemp
non ? (à moins que la méthode de Pascal soit à l'abris de mes 800'000 fichiers, ce dont je doutes)
-- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
Laurent Wacrenier <lwa@teaser.fr> wrote:
Nicolas MICHEL <Nicolas.MICHEL@BonBon.net> écrit:
Je me demande donc comment chercher dans un dossier donné quels sont les
fichiers les plus récents.
S'il n'y a pas trop de fichiers :
find . -type f -print | xargs ls -t | head
Ah, bin selon ce que j'ai testé ça ne passe pas avec les nom comportants
des espaces.
ça ne serait pas plutôt ceci :
find . -type f -print0 |xargs -0 ls -t | head
A propos du "trop grand nombre de fichiers", on peut dans ce cas faire :
find . -type f -fprintf /tmp/findtemp "%TY%Tm%Td %TT %pn" 2>/dev/null
sort -o /tmp/sorttemp -r /temp/findtemp
head /tmp/sorttemp
rm /tmp/sorttemp /tmp/findtemp
non ?
(à moins que la méthode de Pascal soit à l'abris de mes 800'000
fichiers, ce dont je doutes)
--
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes
iChat/AIM : michelnicolas
Je me demande donc comment chercher dans un dossier donné quels sont les fichiers les plus récents.
S'il n'y a pas trop de fichiers :
find . -type f -print | xargs ls -t | head
Ah, bin selon ce que j'ai testé ça ne passe pas avec les nom comportants des espaces. ça ne serait pas plutôt ceci : find . -type f -print0 |xargs -0 ls -t | head
A propos du "trop grand nombre de fichiers", on peut dans ce cas faire :
find . -type f -fprintf /tmp/findtemp "%TY%Tm%Td %TT %pn" 2>/dev/null sort -o /tmp/sorttemp -r /temp/findtemp head /tmp/sorttemp rm /tmp/sorttemp /tmp/findtemp
non ? (à moins que la méthode de Pascal soit à l'abris de mes 800'000 fichiers, ce dont je doutes)
-- S'il n'y a pas de solutions, c'est qu'il n'y a pas de problèmes iChat/AIM : michelnicolas
Nicolas George
Nicolas MICHEL wrote in message <1gx7rec.332cuqvwrwvkN%:
A propos du "trop grand nombre de fichiers", on peut dans ce cas faire :
find . -type f -fprintf /tmp/findtemp "%TY%Tm%Td %TT %pn" 2>/dev/null sort -o /tmp/sorttemp -r /temp/findtemp head /tmp/sorttemp rm /tmp/sorttemp /tmp/findtemp
non ? (à moins que la méthode de Pascal soit à l'abris de mes 800'000 fichiers, ce dont je doutes)
C'est exactement la même méthode, sauf que la communication entre find et sort se fait avec un pipe (et sort se débrouille pour créer des fichiers temporaires s'il estime en avoir besoin) plutôt qu'avec des fichiers temporaires (au nom prévisible dans un répertoire public : à exclure absolument dans des scripts en production s'il y a des utilisateurs potentiellement hostiles).
Nicolas MICHEL wrote in message
<1gx7rec.332cuqvwrwvkN%Nicolas.MICHEL@BonBon.net>:
A propos du "trop grand nombre de fichiers", on peut dans ce cas faire :
find . -type f -fprintf /tmp/findtemp "%TY%Tm%Td %TT %pn" 2>/dev/null
sort -o /tmp/sorttemp -r /temp/findtemp
head /tmp/sorttemp
rm /tmp/sorttemp /tmp/findtemp
non ?
(à moins que la méthode de Pascal soit à l'abris de mes 800'000
fichiers, ce dont je doutes)
C'est exactement la même méthode, sauf que la communication entre find et
sort se fait avec un pipe (et sort se débrouille pour créer des fichiers
temporaires s'il estime en avoir besoin) plutôt qu'avec des fichiers
temporaires (au nom prévisible dans un répertoire public : à exclure
absolument dans des scripts en production s'il y a des utilisateurs
potentiellement hostiles).
Nicolas MICHEL wrote in message <1gx7rec.332cuqvwrwvkN%:
A propos du "trop grand nombre de fichiers", on peut dans ce cas faire :
find . -type f -fprintf /tmp/findtemp "%TY%Tm%Td %TT %pn" 2>/dev/null sort -o /tmp/sorttemp -r /temp/findtemp head /tmp/sorttemp rm /tmp/sorttemp /tmp/findtemp
non ? (à moins que la méthode de Pascal soit à l'abris de mes 800'000 fichiers, ce dont je doutes)
C'est exactement la même méthode, sauf que la communication entre find et sort se fait avec un pipe (et sort se débrouille pour créer des fichiers temporaires s'il estime en avoir besoin) plutôt qu'avec des fichiers temporaires (au nom prévisible dans un répertoire public : à exclure absolument dans des scripts en production s'il y a des utilisateurs potentiellement hostiles).