bonjour,
je cherche a copier tous les fichiers d'un repertoire dont la date est superieure au 2 sep par exemple.
pourriez vous m'indiquer la commande unix adéquate ?
bonjour,
je cherche a copier tous les fichiers d'un repertoire dont la date est superieure au 2 sep par exemple.
pourriez vous m'indiquer la commande unix adéquate ?
et apres ?
j'ai essaye stat %y ?
ca me sort beaucoup d'information.
ce que je maitrise pas trop c'est la liaison entre le selection des fichiers et la commande copy. pas avec un pipe non ? il faut faire un script shell ?
votre reponse abrupte me fait penser que vous me prennez pour quelqu'un sans gene qui pose sa question sans avoir reflechi avant, mais ce n'est pourtant pas le cas.
Si tu y as déjà réfléchi, il ne te reste plus qu'a le faire !
Voici un site pour débuter en shell : http://www.freeos.com/guides/lsst/index.html
essaye, si ca ne marche pas montre nous ce que tu as fait on t'aidera !
j'y ai reflechi, sans trouver la solution, c'est la raison pour laquelle je viens poser ma question ici.
c'est possible en une commande ou je dois obligatoirement faire un script shell ?
Peut-être avec un find. Je sais qu'il y a des possibilité de recherche par date (mais je ne les ai pas en tete), suivi d'un exec.
man find t'en dira plus !
en fait, la question princiaple que je me pose, c'est comment rentrer une liste de fichiers (admettons que je l'ai obtenu avec un find) dans la commande cp ?
avec un pipe ce n'est pas possible ?
j'ai regardé les options de find, il n'y a pas de critere de selection sur la date d'apres ce que j'en ai vu.
bin tu as mal lu ...
TESTS
Les arguments numériques peuvent être indiqués comme suit :
+n supérieur à n,
-n inférieur à n,
n égal à n.
-amin n
dernier accès au fichier il y a n minutes.
-anewer fichier
dernier accès au fichier plus récent que la dernière modifica-
tion de fichier. Le comportement de l’option -anewer est mod-
ifié par l’option -follow uniquement si celle-ci la précède sur
la ligne de commande.
-atime n
dernier accès au fichier il y a n*24 heures.
-cmin n
dernière modification du statut du fichier il y a n minutes.
-cnewer fichier
dernière modification du statut du fichier plus récente que la
dernière modification du fichier fichier. Le comportement de
l’option -cnewer est modifié par l’option -follow uniquement si
celle-ci la précède sur la ligne de commande.
-ctime n
dernière modification du statut du fichier il y a n*24 heures.
Nous sommes assez loquaces pour faire des réponses en plusieurs lignesEnvoyé par tatayoyo
Tu n'es pas très précis, non plus ...
Une date supérieur à une autre ??? Il faut le prendre comment ? Plus ancien (date antérieure) ou plus récent (date postérieure) ?
On t'a donné pas mal d'information pour le faire toi-même, mais n'ayant pas à le faire, nous ne le ferons pas nous-mêmes !
L'option find est intéressante ... avec les +n, -n ou -ctime n.
En outre, find permet d'exécuter un processus sur chaque fichier trouvé (l'option -exec). Tout t'a été déjà indiqué ...
Tu n'as plus qu'a tout remettre en forme pour que ca colle à ton problème !!!
Alors : entre le 02/09 et aujourd'hui, il s'est écoulé environ 45 jours, d'où :
qui te renvoie la liste des fichiers modifiés depuis le 02/99.
Code : Sélectionner tout - Visualiser dans une fenêtre à part find . -mtime -45
Avec find, tu peux en plus demander à exécuter une commande :
Le {} est un synonyme de "fichier trouvé".
Code : Sélectionner tout - Visualiser dans une fenêtre à part find . -mtime -45 -exec cp {} destination \;
Faut utiliser des "back quotes" (Alt Gr+7), mais faut faire attention au nombre de fichier renvoyés (= taille limite d'une commande shell) :comment rentrer une liste de fichiers (admettons que je l'ai obtenu avec un find) dans la commande cp ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part cp `find ...` destination
je n'ai pas demandé que vous le fassiez a ma place, juste un peu plus d'aide et moins de "condescendance".
ca tiens a pas grand chose, mais ton dernier post me met plus sur la voie de la solution que les precedentes reponses qui tiennent en trois mots.
et meme si vous me sortiez la commande toute faite ? serait ce grave ?
vous avez la reponse, et pour mon bien et mon education, vous ne me la donnerez pas ?
personnellement, parfois je cherche des solutions tout seul, parfois on me montre la solution et j'en tire un grand profit. je gagne du temps, je comprend la solution qu'on ma donné, je m'en ressert ensuite, je la transmet a ceux qui en ont besoin un jour, elle peut m'ouvrir la voie sur des recherches futures. on me montre un exemple d'utilisation de commande find, je pourrais par la suite avoir la curiosité d'approfondir l'etude des options en en ayant eu un appercu une fois
je trouve que repondre en trois mots par des "man find" ou des "t'as mal cherché" c'est un peu sec.
Bonjour,
Je suis sur une machine HP-UX.
J'ai besoin de récupérer la liste des fichier modifier dans les 20 dernières minutes.
Je n'ai donc pas accès au option -mmin -amin et -cmin de la commande find. J'ai donc penser utiliser l'option -newer.
Le principe serait de créer un fichier (temporaire) et d'en modifier la date de dernière modification à l'aide touch (option -c).
La question est comment puis je mettre parametre du touch la date actuelle moins 20 minutes?
au final cela donnerai une commande du type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part touch -c `calcul date` tmpfile && find . -newer tmpfile -name .log && rm tmpfile
La meilleure solution et la plus simple est sans conteste un find avec les critères de recherche appropriés suivi d'un -exec avec la commande cp. Cette commande est très utile en administration car elle permet de traiter des fichiers/dossiers répondant à des critères de sélection très précis de façon récursive.
Merci, pour ce renseignement. Mon problème est de génerer l'un de ces critères :Envoyé par mikool19
-la contrainte de temps.
Désirant une précision à la minute (ce qui n'est pas possible sous une HP-UX), j'ai choisi l'option -newer qui filtre les fichiers plus ancien que le fichier spécifié avec l'option -newer.
Mon problème devient alors de créer un fichier avec une date spécifique, une date avec un retard de 20 minutes par rapport à la date de la machine.
Pour cela il y a la commande suivante :
Je cherche donc une commande simple pour générer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part touch -m -t AAMMJJhhmm tmpfile
AAMMJJhhmm = `date` - 20 minutes
Sous HP-UX cette commande n'existe pas, il te faut "fabriquer" la date - 20 min toi même ......
sur que GNU date est plus pratique, il sait le faire ......
J'étais justement en train de regarder la fonction date.
Sous HPUX, elle ne permet que d'afficher la date selon un pattern spécifique ou de configurer la date. Elle ne permet aucun calcul.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager