Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 11h46   #1
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
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 :
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 :
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,
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 09/05/2011, 12h00   #2
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Tu dois utiliser l'option suivante de find pour faire ce genre de recherches
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 12h09   #3
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
Merci des info, va falloir que je me remette dans les pages man moi !

Code :
find /mon_repertoire -regex name.type.[0-9][0-9]-[0-9]-[0-9]
Pourrait passer? Ou c'est plus complexe?

Merci,
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 09/05/2011, 12h40   #4
Membre Expert
 
Avatar de becket
 
Frédéric Brugmans
Informaticien multitâche
Inscription : février 2005
Messages : 661
Détails du profil
Informations personnelles :
Nom : Frédéric Brugmans

Informations professionnelles :
Activité : Informaticien multitâche

Informations forums :
Inscription : février 2005
Messages : 661
Points : 1 196
Points : 1 196
Citation:
Envoyé par romain0412 Voir le message
Merci des info, va falloir que je me remette dans les pages man moi !

Code :
find /mon_repertoire -regex name.type.[0-9][0-9]-[0-9]-[0-9]
Pourrait passer? Ou c'est plus complexe?

Merci,
Code :
1
2
 
find /mon_repertoire -regex ".*name.type.[0-9][0-9]-[0-9]-[0-9].*"
becket est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/05/2011, 13h09   #5
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
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 :
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 :
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
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/05/2011, 10h50   #6
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
Bonjour,

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

Je tape :

Code :
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,
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 10/05/2011, 10h54   #7
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
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 :
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 :
find /cygdrive/h/mon_dossier/log -regex  ".*application.log.[0-9][0-9]-[0-9]-[0-9]" -atime +30 -print -exec gzip {} \;
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/05/2011, 10h55   #8
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Citation:
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 09h39   #9
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
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.
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 09h47   #10
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
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 :
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 :
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
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 10h10   #11
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Re-

Essaye avec ça :

Code :
-regex '.*[0-9][0-9-]*'
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 10h12   #12
Membre Expert
 
Homme Alexis
Intégrateur d'Exploitation
Inscription : février 2003
Messages : 876
Détails du profil
Informations personnelles :
Nom : Homme Alexis
Âge : 32
Localisation : France

Informations professionnelles :
Activité : Intégrateur d'Exploitation
Secteur : Biens de consommation

Informations forums :
Inscription : février 2003
Messages : 876
Points : 1 619
Points : 1 619
Envoyer un message via ICQ à Alek-C Envoyer un message via Skype™ à Alek-C
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] !
Alek-C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 10h30   #13
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
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 :
find: missing argument to "-exec"
Alors que la commande tapé à la mano :

Code :
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,
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 10h39   #14
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Sans voir le script ça va être difficile
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/05/2011, 10h45   #15
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
Il n'y a pas grand chose dedans mais voilà :

Code :
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 :
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,
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/05/2011, 10h50   #16
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Il fait quoi le double saut de ligne avant le "{} \;" ???

Code :
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 10h51   #17
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
Erreur de frappe sur le forum c'est tout, j'ai corrigé entre temps mais c'est ok sur le script
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/05/2011, 10h57   #18
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/05/2011, 10h59   #19
Candidat au titre de Membre du Club
 
Inscription : février 2009
Messages : 36
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 36
Points : 12
Points : 12
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,
romain0412 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 11/05/2011, 11h04   #20
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
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.
zipe31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h04.


 
 
 
 
Partenaires

Hébergement Web