Comment avec find trouver les fichiers modifiés à une certaine date par
exemple 2004-10-10, comment insérer ce paramètre date dans la commande find
Parce là je sèche ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Stephane Chazelas
2006-01-10, 21:43(+01), Gérard Grondin:
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find Parce là je sèche ... [...]
On peut pas. A moins de creer deux fichiers (avec touch -t ....), avec des dates un a minuit le matin, un a minuit le lendemain, et d'utiliser ! -older file1 -older file2.
print -rl -- **/*(De{' stat -f %Y%m%d -H s -- $REPLY [[ $s[mtime] = 20041010 ]]'})
-- Stéphane
2006-01-10, 21:43(+01), Gérard Grondin:
Comment avec find trouver les fichiers modifiés à une certaine date par
exemple 2004-10-10, comment insérer ce paramètre date dans la commande find
Parce là je sèche ...
[...]
On peut pas. A moins de creer deux fichiers (avec touch -t
....), avec des dates un a minuit le matin, un a minuit le
lendemain, et d'utiliser ! -older file1 -older file2.
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find Parce là je sèche ... [...]
On peut pas. A moins de creer deux fichiers (avec touch -t ....), avec des dates un a minuit le matin, un a minuit le lendemain, et d'utiliser ! -older file1 -older file2.
print -rl -- **/*(De{' stat -f %Y%m%d -H s -- $REPLY [[ $s[mtime] = 20041010 ]]'})
-- Stéphane
Pascal Bourguignon
Gérard Grondin writes:
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find Parce là je sèche ...
On ne peut spécifier qu'un nombre de jours, AMC.
Il faut donc calculer le nombre de jours entre la date voulue et la date courante, ce qui est trivial:
#!/bin/bash
function year-to-day () { local y=$1 local q=$(( $y % 400 )) local c=$(( $q % 100 )) local a=$(( $c % 4 )) local i if [ $q = 0 -o ( $c != 0 -a $a = 0 ) ] ; then i=0 ; else i=1 ; fi echo $(( ( $y / 400 ) * 146097 + ( $q / 100 ) * 36524 + ( $c / 4 ) * 1461 + a * 365 + $i )) }
days=(0 0 31 59 90 120 151 181 212 243 273 304 334) function month-to-day () { local y=$1 local m=$2 if [ $m -gt 2 ] ; then echo $(( $(leap-year $y) + ${days[$m]} )) else echo ${days[$m]} fi }
function date-to-day () { local y=$1 local m=$2 local d=$3 echo $(( $(year-to-day $y) + $(month-to-day $y $m) + $d )) }
function date-diff () { local y1=$1 local m1=$2 local d1=$3 local y2=$4 local m2=$5 local d2=$6 echo $(( $(date-to-day $y1 $m1 $d1) - $(date-to-day $y2 $m2 $d2) )) }
HEALTH WARNING: Care should be taken when lifting this product, since its mass, and thus its weight, is dependent on its velocity relative to the user.
Gérard Grondin <nospam@wanadoo.fr> writes:
Comment avec find trouver les fichiers modifiés à une certaine date
par exemple 2004-10-10, comment insérer ce paramètre date dans la
commande find
Parce là je sèche ...
On ne peut spécifier qu'un nombre de jours, AMC.
Il faut donc calculer le nombre de jours entre la date voulue et la
date courante, ce qui est trivial:
#!/bin/bash
function year-to-day () {
local y=$1
local q=$(( $y % 400 ))
local c=$(( $q % 100 ))
local a=$(( $c % 4 ))
local i
if [ $q = 0 -o ( $c != 0 -a $a = 0 ) ] ; then i=0 ; else i=1 ; fi
echo $(( ( $y / 400 ) * 146097 + ( $q / 100 ) * 36524 + ( $c / 4 ) * 1461 + a * 365 + $i ))
}
days=(0 0 31 59 90 120 151 181 212 243 273 304 334)
function month-to-day () {
local y=$1
local m=$2
if [ $m -gt 2 ] ; then
echo $(( $(leap-year $y) + ${days[$m]} ))
else
echo ${days[$m]}
fi
}
function date-to-day () {
local y=$1
local m=$2
local d=$3
echo $(( $(year-to-day $y) + $(month-to-day $y $m) + $d ))
}
function date-diff () {
local y1=$1
local m1=$2
local d1=$3
local y2=$4
local m2=$5
local d2=$6
echo $(( $(date-to-day $y1 $m1 $d1) - $(date-to-day $y2 $m2 $d2) ))
}
HEALTH WARNING: Care should be taken when lifting this product,
since its mass, and thus its weight, is dependent on its velocity
relative to the user.
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find Parce là je sèche ...
On ne peut spécifier qu'un nombre de jours, AMC.
Il faut donc calculer le nombre de jours entre la date voulue et la date courante, ce qui est trivial:
#!/bin/bash
function year-to-day () { local y=$1 local q=$(( $y % 400 )) local c=$(( $q % 100 )) local a=$(( $c % 4 )) local i if [ $q = 0 -o ( $c != 0 -a $a = 0 ) ] ; then i=0 ; else i=1 ; fi echo $(( ( $y / 400 ) * 146097 + ( $q / 100 ) * 36524 + ( $c / 4 ) * 1461 + a * 365 + $i )) }
days=(0 0 31 59 90 120 151 181 212 243 273 304 334) function month-to-day () { local y=$1 local m=$2 if [ $m -gt 2 ] ; then echo $(( $(leap-year $y) + ${days[$m]} )) else echo ${days[$m]} fi }
function date-to-day () { local y=$1 local m=$2 local d=$3 echo $(( $(year-to-day $y) + $(month-to-day $y $m) + $d )) }
function date-diff () { local y1=$1 local m1=$2 local d1=$3 local y2=$4 local m2=$5 local d2=$6 echo $(( $(date-to-day $y1 $m1 $d1) - $(date-to-day $y2 $m2 $d2) )) }
HEALTH WARNING: Care should be taken when lifting this product, since its mass, and thus its weight, is dependent on its velocity relative to the user.
Stephane Chazelas
On Tue, 10 Jan 2006 23:40:11 +0100, Pascal Bourguignon wrote:
Gérard Grondin writes:
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find [...]
Ca ne marchera pas en general. D'apres POSIX, -mtime 1, c'est les fichiers modifies entre hier a la meme heure que maintenant et avant-hier a la meme heure que maintenant.
Le find de Solaris se comporte differemment (modifies entre hier 0:0 et hier la meme heure), mais ca ne convient toujours pas.
Le GNU find a l'option -daystart pour ca.
-- Stephane
On Tue, 10 Jan 2006 23:40:11 +0100, Pascal Bourguignon wrote:
Gérard Grondin <nospam@wanadoo.fr> writes:
Comment avec find trouver les fichiers modifiés à une certaine date
par exemple 2004-10-10, comment insérer ce paramètre date dans la
commande find
[...]
Ca ne marchera pas en general. D'apres POSIX, -mtime 1, c'est
les fichiers modifies entre hier a la meme heure que maintenant
et avant-hier a la meme heure que maintenant.
Le find de Solaris se comporte differemment (modifies entre hier
0:0 et hier la meme heure), mais ca ne convient toujours pas.
On Tue, 10 Jan 2006 23:40:11 +0100, Pascal Bourguignon wrote:
Gérard Grondin writes:
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find [...]
Ca ne marchera pas en general. D'apres POSIX, -mtime 1, c'est les fichiers modifies entre hier a la meme heure que maintenant et avant-hier a la meme heure que maintenant.
Le find de Solaris se comporte differemment (modifies entre hier 0:0 et hier la meme heure), mais ca ne convient toujours pas.
Le GNU find a l'option -daystart pour ca.
-- Stephane
Stephane Chazelas
On 11 Jan 2006 07:26:13 +0100, Etienne de Tocqueville wrote:
Gérard Grondin writes:
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find
Si tu cherche les fichiers modifier à une certaine date (et non à partir d'une certaine date) c'est faisable avec n'importe quel find (avec l'option -ls) suivi d'un grep sur la date voulue
find * -ls | grep "Dec 20 ..:.." [...]
Et si le nom du fichier, de l'utilisateur, du groupe, du lien sur lequel pointe le lien symbolique contient "Dec 20"?
Et si les noms de fichiers sont sur plusieurs lignes?
-- Stephane
On 11 Jan 2006 07:26:13 +0100, Etienne de Tocqueville wrote:
Gérard Grondin <nospam@wanadoo.fr> writes:
Comment avec find trouver les fichiers modifiés à une certaine date par
exemple 2004-10-10, comment insérer ce paramètre date dans la commande
find
Si tu cherche les fichiers modifier à une certaine date (et non à partir
d'une certaine date) c'est faisable avec n'importe quel find (avec
l'option -ls) suivi d'un grep sur la date voulue
find * -ls | grep "Dec 20 ..:.."
[...]
Et si le nom du fichier, de l'utilisateur, du groupe, du lien
sur lequel pointe le lien symbolique contient "Dec 20"?
Et si les noms de fichiers sont sur plusieurs lignes?
On 11 Jan 2006 07:26:13 +0100, Etienne de Tocqueville wrote:
Gérard Grondin writes:
Comment avec find trouver les fichiers modifiés à une certaine date par exemple 2004-10-10, comment insérer ce paramètre date dans la commande find
Si tu cherche les fichiers modifier à une certaine date (et non à partir d'une certaine date) c'est faisable avec n'importe quel find (avec l'option -ls) suivi d'un grep sur la date voulue
find * -ls | grep "Dec 20 ..:.." [...]
Et si le nom du fichier, de l'utilisateur, du groupe, du lien sur lequel pointe le lien symbolique contient "Dec 20"?
Et si les noms de fichiers sont sur plusieurs lignes?
-- Stephane
Paul Gaborit
À (at) 12 Jan 2006 07:42:41 +0100, Etienne de Tocqueville écrivait (wrote):
Et alors ?... Sous prétexte qu'il existe 1 ou 2 cas tordus qui mettent ma ligne de commande en défaut, j'aurais dû la cacher à l'OP, alors que cette réponse lui convient très certainement tout a fait ?
En tout cas, j'ai souvent eu besoin de faire cette recherche, et ça a parfaitement répondu à mon besoin. Ce qui est important, c'est qu'on ne passe à coté d'aucun fichier, et si certains fichiers sortent à tord, on les voit très rapidement d'un seul coup d'oeil.
Jusque là... d'accord avec vous : une commande simple à retenir, même si elle n'est pas très robuste face à certains cas tordus/rares, dépanne bien. Ce qui compte c'est que celui qui l'utilise en connaisse les limites. Au pire, il en assume les conséquences... ;-)
Quant aux fichiers sur plusieurs lignes qui mettent en défaut la quasi-totalité des scripts manipulant des noms fichiers, il faudrait un jour arréter ce délire : c'est un cas qu'on ne rencontre jamais, même si c'est théoriquement possible.
Là, plus d'accord du tout ! Un script (et non pas une commande tapée par un être humain devant son terminal) ne peut évidemment pas "voir très rapidement d'un seul coup d'oeil" que la sortie est erronée ! Conséquences éventuelles : des gros trous de sécurité, des patchs qui marchent chez "presque" tout le monde sauf les quelques malheureux qui ont un "espace" dans le nom d'un répertoire (cas réel d'une mise à jour chez Apple), etc.
Et si vraiment on est paranoïaque, rien n'empêche de vérifier avant qu'on n'est pas dans ce cas là.
Comment fait le script pour vérifier qu'il n'est pas dans le cas où ça ne marche pas ? Il vaut mieux écrire un script robuste.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
À (at) 12 Jan 2006 07:42:41 +0100,
Etienne de Tocqueville <edt-news-11-2005@galacsys.com> écrivait (wrote):
Et alors ?... Sous prétexte qu'il existe 1 ou 2 cas tordus qui mettent
ma ligne de commande en défaut, j'aurais dû la cacher à l'OP, alors que
cette réponse lui convient très certainement tout a fait ?
En tout cas, j'ai souvent eu besoin de faire cette recherche, et ça a
parfaitement répondu à mon besoin. Ce qui est important, c'est qu'on ne
passe à coté d'aucun fichier, et si certains fichiers sortent à tord, on
les voit très rapidement d'un seul coup d'oeil.
Jusque là... d'accord avec vous : une commande simple à retenir, même
si elle n'est pas très robuste face à certains cas tordus/rares,
dépanne bien. Ce qui compte c'est que celui qui l'utilise en connaisse
les limites. Au pire, il en assume les conséquences... ;-)
Quant aux fichiers sur plusieurs lignes qui mettent en défaut la
quasi-totalité des scripts manipulant des noms fichiers, il faudrait un
jour arréter ce délire : c'est un cas qu'on ne rencontre jamais, même si
c'est théoriquement possible.
Là, plus d'accord du tout ! Un script (et non pas une commande tapée
par un être humain devant son terminal) ne peut évidemment pas "voir
très rapidement d'un seul coup d'oeil" que la sortie est erronée !
Conséquences éventuelles : des gros trous de sécurité, des patchs qui
marchent chez "presque" tout le monde sauf les quelques malheureux qui
ont un "espace" dans le nom d'un répertoire (cas réel d'une mise à
jour chez Apple), etc.
Et si vraiment on est paranoïaque, rien n'empêche de vérifier avant
qu'on n'est pas dans ce cas là.
Comment fait le script pour vérifier qu'il n'est pas dans le cas où ça
ne marche pas ? Il vaut mieux écrire un script robuste.
--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>
À (at) 12 Jan 2006 07:42:41 +0100, Etienne de Tocqueville écrivait (wrote):
Et alors ?... Sous prétexte qu'il existe 1 ou 2 cas tordus qui mettent ma ligne de commande en défaut, j'aurais dû la cacher à l'OP, alors que cette réponse lui convient très certainement tout a fait ?
En tout cas, j'ai souvent eu besoin de faire cette recherche, et ça a parfaitement répondu à mon besoin. Ce qui est important, c'est qu'on ne passe à coté d'aucun fichier, et si certains fichiers sortent à tord, on les voit très rapidement d'un seul coup d'oeil.
Jusque là... d'accord avec vous : une commande simple à retenir, même si elle n'est pas très robuste face à certains cas tordus/rares, dépanne bien. Ce qui compte c'est que celui qui l'utilise en connaisse les limites. Au pire, il en assume les conséquences... ;-)
Quant aux fichiers sur plusieurs lignes qui mettent en défaut la quasi-totalité des scripts manipulant des noms fichiers, il faudrait un jour arréter ce délire : c'est un cas qu'on ne rencontre jamais, même si c'est théoriquement possible.
Là, plus d'accord du tout ! Un script (et non pas une commande tapée par un être humain devant son terminal) ne peut évidemment pas "voir très rapidement d'un seul coup d'oeil" que la sortie est erronée ! Conséquences éventuelles : des gros trous de sécurité, des patchs qui marchent chez "presque" tout le monde sauf les quelques malheureux qui ont un "espace" dans le nom d'un répertoire (cas réel d'une mise à jour chez Apple), etc.
Et si vraiment on est paranoïaque, rien n'empêche de vérifier avant qu'on n'est pas dans ce cas là.
Comment fait le script pour vérifier qu'il n'est pas dans le cas où ça ne marche pas ? Il vaut mieux écrire un script robuste.
-- Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>