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 :

Options de find sur recherche de fichiers datés


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut Options de find sur recherche de fichiers datés
    Bonjour,

    Je souhaite effectuer une recherche sur des fichiers comme nom "name.type.année-mois-jour".

    Je fais donc un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /le_repertoire -name "name.type.[0-9][0-9]-[0-9]-[0-9]"
    mais cela ne passe pas. Le problème vient sûrement de la partie avec les chiffres mais je ne vois pas trop. Un

    Bonjour,

    Je souhaite effectuer une recherche sur des fichiers comme nom "name.type.année-mois-jour".

    Je fais donc un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /le_repertoire -name "name.type.*"
    Fonctionne bien mais me ressort des résultats non désirés !

    Si quelqu'un pouvait m'aiguiller

    Merci,

  2. #2
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Tu dois utiliser l'option suivante de find pour faire ce genre de recherches

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Merci des info, va falloir que je me remette dans les pages man moi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /mon_repertoire -regex name.type.[0-9][0-9]-[0-9]-[0-9]
    Pourrait passer? Ou c'est plus complexe?

    Merci,

  4. #4
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par romain0412 Voir le message
    Merci des info, va falloir que je me remette dans les pages man moi !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /mon_repertoire -regex name.type.[0-9][0-9]-[0-9]-[0-9]
    Pourrait passer? Ou c'est plus complexe?

    Merci,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    find /mon_repertoire -regex ".*name.type.[0-9][0-9]-[0-9]-[0-9].*"

  5. #5
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Comme indiqué par backet, tu dois au moins ajouter une regexp devant car find compare le nom du fichier avec son arborescence par rapport à la racine de la recherche.

    Cela étant, si les fichiers sont dans le dossier courant, tu peux directement utiliser ls :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ ls name*
    name.type.11-01-01  name.type.11-1-1  name.type.11-a-1  name.type.2011-01-01
    $ ls name.type.[0-9][0-9]-[0-9]-[0-9]
    name.type.11-1-1
    Edit, ou avec globstar peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ shopt globstar
    globstar        on
    $ ls -R /home/**/name.type.[0-9][0-9]-[0-9]-[0-9]
    /home/user/name.type.11-1-1
    $ find /home -regex ".*/name.type.[0-9][0-9]-[0-9]-[0-9]" 2>/dev/null
    /home/user/name.type.11-1-1

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Bonjour,

    J'utilise le find car derrière je compresse les résultats mais là ça marche pas des masses.

    Je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /cygdrive/h/mon_dossier/log -regex  "application.log.[0-9][0-9-[0-9-[0-9" -atime +30 -print -exec gzip {} \;
    Ah oui et je suis sous CygWin. Si quelqu'un peut me filer un coup de main

    Merci,

  7. #7
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par romain0412 Voir le message
    Bonjour,

    J'utilise le find car derrière je compresse les résultats mais là ça marche pas des masses.

    Je tape :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /cygdrive/h/mon_dossier/log -regex  "application.log.[0-9][0-9-[0-9-[0-9" -atime +30 -print -exec gzip {} \;
    Ah oui et je suis sous CygWin. Si quelqu'un peut me filer un coup de main

    Merci,
    On t'a dit qu'il fallait ajouter .* devant le nom de ton fichier car find retourne le chemin relatif également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /cygdrive/h/mon_dossier/log -regex  ".*application.log.[0-9][0-9]-[0-9]-[0-9]" -atime +30 -print -exec gzip {} \;

  8. #8
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    sur des fichiers comme nom "name.type.année-mois-jour".
    Quel est le format exact de ces dates ?

    Année 2 ou 4 chiffres ?(11 ou 2011)
    Mois et jours 1 ou 2 chiffres (01 ou 1, 09 ou 9, etc.) ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,



    Quel est le format exact de ces dates ?

    Année 2 ou 4 chiffres ?(11 ou 2011)
    Mois et jours 1 ou 2 chiffres (01 ou 1, 09 ou 9, etc.) ?
    Le format est 2001-01-30 par exemple.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Citation Envoyé par Alek-C Voir le message
    On t'a dit qu'il fallait ajouter .* devant le nom de ton fichier car find retourne le chemin relatif également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /cygdrive/h/mon_dossier/log -regex  ".*application.log.[0-9][0-9]-[0-9]-[0-9]" -atime +30 -print -exec gzip {} \;
    J'ai bien tapé les différentes commandes proposées mais sans obtenir de résultat.

    J'ai tapé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     find /cygdrive/h/application/log/ -regex ".*application.log.[0-9][0-9]-[0-9]-[0-9]"
    ou
    find /cygdrive/h/application/log/ -regex ".*application.log.[0-9][0-9]-[0-9]-[0-9]*"
    J'ai l'impression que c'est le [0-9] qui ne passe pas, lorsque je les remplace par * j'ai bien des match mais j'ai besoin d'affiner, car j'ai des applicatio.log.error.date, application.log.access.date et des application.log.date.

    Bref, ça passe pas...

    Merci du coup de main

  11. #11
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Re-

    Essaye avec ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -regex '.*[0-9][0-9-]*'
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  12. #12
    Membre chevronné

    Homme Profil pro
    Responsable projets techniques
    Inscrit en
    Février 2003
    Messages
    980
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable projets techniques
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Février 2003
    Messages : 980
    Points : 1 894
    Points
    1 894
    Par défaut
    Citation Envoyé par romain0412 Voir le message
    Le format est 2001-01-30 par exemple.
    ... ...

    Alors pourquoi tu écris [0-9][0-9]-[0-9]-[0-9] dans ton premier message ?

    [0-9] est un motif qui va correspondre à un et un seul chiffre.

    Donc [0-9][0-9]-[0-9]-[0-9] va correspondre à 2 chiffres, suivis d'un tiret, d'un chiffre, d'un tiret et enfin d'un chiffre (voir mon tout premier exemple).

    Donc pour reconnaître quelque chose comme 2001-01-30, il faut écrire [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] !

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Nickel,

    D'un coup ça fonctionne beaucoup mieux !!

    Je vais profiter de vous encore un petit peu si vous le voulez bien.

    J'ai tapé mon script et j'ai un retour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find: missing argument to "-exec"
    Alors que la commande tapé à la mano :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find /cygdrive/h/application/log/ -regex ".*application.log.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" -atime +10 -print -exec gzip {} \;
    Fonctionne très bien. J'ai bien sûr copié la même chose dans mon script.

    Merci,

  14. #14
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Sans voir le script ça va être difficile
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Il n'y a pas grand chose dedans mais voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    /bin/sh.exe
    #compression application.log
    find /cygdrive/h/application/log/ -regex ".*application.log.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" -atime +10 -print -exec gzip {} \;
    # compression  fichiers log X
    find /cygdrive/g/appliX/logs/ -name "*" -atime +10 -print -exec gzip {} \;
    Voilà le retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $ ./script.sh
    : No such file or directorybin/sh.exe
    find: missing argument to "-exec"
    Puis exécution du second find
    Alors que /bin/sh.exe existe bien... et le second find fonctionne lui très bien

    Merci,

  16. #16
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Il fait quoi le double saut de ligne avant le "{} \;" ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bin/sh.exe
    #compression application.log
    find /cygdrive/h/application/log/ -regex ".*application.log.[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]" -atime +10 -print -exec gzip {} \;
    # compression  fichiers log X
    find /cygdrive/g/appliX/logs/ -name "*" -atime +10 -print -exec gzip {} \;
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Erreur de frappe sur le forum c'est tout, j'ai corrigé entre temps mais c'est ok sur le script

  18. #18
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Ok.

    Et la commande sans le "-exec {} \;" retourne bien les fichiers en question sans message d'erreur ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 36
    Points : 29
    Points
    29
    Par défaut
    Le problème pourrait-il venir du fait que je n'ai pas log datant de plus de 10 jours?

    Je me réponds, j'ai enlevé le -atime +10 et ça marche en ligne de commande, mais pas dans le script.

    CygWin en fait rien de particuliers ou ne nécessite pas une formulation particulière pour les scripts?

    Merci,

  20. #20
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Je ne pense pas

    Mais dans le doute essaie avec une date plus récente et change le "gzip" par "echo", on sera fixé
    $ man woman
    Il n'y a pas de page de manuel pour woman.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [VB.NET] Comment rechercher des fichiers sur un disque.
    Par vijeo dans le forum Windows Forms
    Réponses: 5
    Dernier message: 04/08/2017, 10h17
  2. Find et Recherche de fichier dans une arborescence
    Par Lolitaaa dans le forum Unix
    Réponses: 1
    Dernier message: 04/03/2011, 12h51
  3. Réponses: 3
    Dernier message: 30/09/2007, 12h39
  4. Recherche de Fichiers sur tout le disque
    Par bonjour69 dans le forum Entrée/Sortie
    Réponses: 18
    Dernier message: 23/09/2006, 21h23
  5. Recherche sur tous les fichiers d'un projet
    Par Kaorichan dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 28/04/2005, 11h28

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