IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Copier les fichiers d'un répertoire dont la date est supérieure à x


Sujet :

Shell et commandes GNU

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut Copier les fichiers d'un répertoire dont la date est supérieure à x
    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 ?

  2. #2
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    man stat

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    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.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    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 !

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    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 ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    376
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 376
    Points : 402
    Points
    402
    Par défaut
    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 !

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    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 ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    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.

  9. #9
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    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.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    vous n'etes pas tres locaces ici...

  11. #11
    Membre expert
    Avatar de 2Eurocents
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 177
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 177
    Points : 3 166
    Points
    3 166
    Par défaut
    Citation Envoyé par tatayoyo
    vous n'etes pas tres locaces ici...
    Nous sommes assez loquaces pour faire des réponses en plusieurs lignes

    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 !!!

  12. #12
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    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.

    Avec find, tu peux en plus demander à exécuter une commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find . -mtime -45 -exec cp {} destination \;
    Le {} est un synonyme de "fichier trouvé".

    comment rentrer une liste de fichiers (admettons que je l'ai obtenu avec un find) dans la commande cp ?
    Faut utiliser des "back quotes" (Alt Gr+7), mais faut faire attention au nombre de fichier renvoyés (= taille limite d'une commande shell) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cp `find ...` destination

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 103
    Points
    103
    Par défaut
    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.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    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

  15. #15
    Membre à l'essai
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 57

    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Points : 16
    Points
    16
    Par défaut
    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.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par mikool19
    La meilleure solution et la plus simple est sans conteste un find avec les critères de recherche appropriés [...].
    Merci, pour ce renseignement. Mon problème est de génerer l'un de ces critères :

    -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 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    touch -m -t AAMMJJhhmm tmpfile
    Je cherche donc une commande simple pour générer :

    AAMMJJhhmm = `date` - 20 minutes

  17. #17
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    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 ......

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    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.

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/10/2008, 15h44
  2. Copier les fichiers
    Par seb2020 dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 01/10/2008, 18h39
  3. Fonction pour copier les fichiers
    Par nabil dans le forum Vos contributions VB6
    Réponses: 0
    Dernier message: 08/12/2007, 10h16
  4. Comment copier LES fichiers cachés d'un répertoire donné :-)
    Par gifffftane dans le forum Shell et commandes GNU
    Réponses: 6
    Dernier message: 25/06/2007, 18h57
  5. [BAT] : Copier les fichiers et les crypter
    Par ADONET dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 15/02/2006, 18h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo