Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

copie de fichiers (bis) et date de création

8 réponses
Avatar
miterrandir
Bonjour

Je cherche à peaufiner le fonctionnement de la tâche cron suivante (que vous
m'avez indiquée il y a quelques jours) :

find /source
\( -name '*.jpg' -o -name '*.png' -o -name '*.gif' -o -name '*.bmp'
\) -exec cp -v '{}' /destination \;

Le but était de copier les images d'un répertoire à l'autre en fonction de
leur extension.

Pour optimiser, je me demande s'il est possible d'ajouter un paramètre en
fonction de la date de création du fichier (upload) sur le serveur.

L'idéal serait de demander la copie des fichiers uploadés il y a moins de 60
minutes.

Merci pour vos conseils.

8 réponses

Avatar
Olivier Miakinen

find /source
( -name '*.jpg' -o -name '*.png' -o -name '*.gif' -o -name '*.bmp'
) -exec cp -v '{}' /destination ;

Pour optimiser, je me demande s'il est possible d'ajouter un paramètre en
fonction de la date de création du fichier (upload) sur le serveur.


Cherche dans la doc de find, je crois bien qu'il y a des options du
genre de -atime, -mtime ou -ctime.

Avatar
talon
miterrandir wrote:
Bonjour

Je cherche à peaufiner le fonctionnement de la tâche cron suivante (que vous
m'avez indiquée il y a quelques jours) :

find /source
( -name '*.jpg' -o -name '*.png' -o -name '*.gif' -o -name '*.bmp'
) -exec cp -v '{}' /destination ;

Le but était de copier les images d'un répertoire à l'autre en fonction de
leur extension.

Pour optimiser, je me demande s'il est possible d'ajouter un paramètre en
fonction de la date de création du fichier (upload) sur le serveur.

L'idéal serait de demander la copie des fichiers uploadés il y a moins de 60
minutes.

Merci pour vos conseils.




find source (... -o ...) -cmin -60 -exec cp {} ;

rose% touch toto
rose% find . -maxdepth 1 -cmin -3
.
./toto
./.xsession-errors


--

Michel TALON

Avatar
Cyrille Lefevre
find /source
( -name '*.jpg' -o -name '*.png' -o -name '*.gif' -o -name '*.bmp'
) -exec cp -v '{}' /destination ;

Pour optimiser, je me demande s'il est possible d'ajouter un paramèt re en
fonction de la date de création du fichier (upload) sur le serveur.


Cherche dans la doc de find, je crois bien qu'il y a des options du
genre de -atime, -mtime ou -ctime.



Hi, Bonjour,

-mtime, etc ne marchent qu'en jours...
pour les unités inférieurs, le mieux est encore de créer un fichier de
référence et de faire une recherche en fonction de ce dernier.

touch -t $(TZ=XXX-1 date +%m%d%H%M%S) ref
# TZ=XXX-1 => date courant - 1 heure
# +%... => cf man 3 strftime
# VAR=VAL cmd => VAR exporté temporairement avec la valeur VAL
# pour la commande cmd
find /source -newer ref ( ... ) -exec ... ;
rm ref

alternative, créer un fichier de référence, puis le mettre à jour après
chaque find, comme ça, tu ne risques pas d'oublier des fichiers si la
machine est arrêté entre 2 find.

find /source -newer ref ( ... ) -exec ... ;
touch ref

Regards, Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.


Avatar
Cyrille Lefevre
find source (... -o ...) -cmin -60 -exec cp {} ;

rose% touch toto
rose% find . -maxdepth 1 -cmin -3
.
./toto
./.xsession-errors


Hi, Bonjour,

si je ne me trompe, il s'agit d'un forum unix "généraliste"
et non d'un forum GNU "spécifique", n'est ce pas ?

http://www.opengroup.org/onlinepubs/009695399/utilities/find.html

pas de -cmin, etc. à l'horizon...

Regards, Cordialement,

Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%
supprimer "%nospam% et ".invalid" pour me repondre.
remove "%nospam" and ".invalid" to answer me.

Avatar
Thierry B.
--{ Cyrille Lefevre a plopé ceci: }--

si je ne me trompe, il s'agit d'un forum unix "généraliste"
et non d'un forum GNU "spécifique", n'est ce pas ?


D'un autre coté, une immense majorité des outils GNU s'installent
aisément dans une grande majorité des Unix généralistes, non ?

Et le find de mon OpenBSD connait bien l'option -cmin...

--
"Low cost, stand-alone, easy to use". The trigone of computing.

Avatar
talon
Cyrille Lefevre <cyrille.lefevre-news% wrote:
find source (... -o ...) -cmin -60 -exec cp {} ;

rose% touch toto
rose% find . -maxdepth 1 -cmin -3
.
./toto
./.xsession-errors


Hi, Bonjour,

si je ne me trompe, il s'agit d'un forum unix "généraliste"
et non d'un forum GNU "spécifique", n'est ce pas ?

http://www.opengroup.org/onlinepubs/009695399/utilities/find.html

pas de -cmin, etc. à l'horizon...


Tu sais, j'ai écrit ça pour rendre service, dans la mesure du possible.
Au vu du page man de find, ctime n correspond à n *jours* et cmin n à
n minutes, la question initialement posée. En ce qui concerne l'Open
Group, tu ne peux pas savoir à quel point je m'en tamponne le coquillard.
Le find GNU se trouve sur Linux, FreeBSD, ça doit bien couvrir 100 fois
le nombre des fossiles qui tournent sur des systèmes Unix propriétaires.
Et qui plus est je n'ai pas le moindre goût pour une carrière de
grammairien, de juriste, ou de pinailleur.



--

Michel TALON


Avatar
Matthieu Moy
Cyrille Lefevre <cyrille.lefevre-news%
writes:

find /source -newer ref ( ... ) -exec ... ;
touch ref


Faut juste faire gaffe au cas où un fichier serait ajouté à la source
pendant le find : dans ce cas là, il risque de ne pas être pris par le
find du jour, et ne sera pas pris par le find du lendemain.

Je pense que

touch ref.tmp
find /source -newer ref ...
mv -f ref.tmp ref

devrait passer.

--
Matthieu

Avatar
miterrandir
Michel Talon le lundi 7 avril 2008 22:10

miterrandir wrote:
Bonjour

Je cherche à peaufiner le fonctionnement de la tâche cron suivante (que
vous m'avez indiquée il y a quelques jours) :

find /source
( -name '*.jpg' -o -name '*.png' -o -name '*.gif' -o -name '*.bmp'
) -exec cp -v '{}' /destination ;

Le but était de copier les images d'un répertoire à l'autre en fonction
de leur extension.

Pour optimiser, je me demande s'il est possible d'ajouter un paramètre en
fonction de la date de création du fichier (upload) sur le serveur.

L'idéal serait de demander la copie des fichiers uploadés il y a moins de
60 minutes.

Merci pour vos conseils.




find source (... -o ...) -cmin -60 -exec cp {} ;

rose% touch toto
rose% find . -maxdepth 1 -cmin -3
.
./toto
./.xsession-errors




Impeccable merci beaucoup.