Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3328 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Commande find sous linux [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Commande find sous linux [RESOLU]

n°1375408
Yop69
Posté le 26-05-2006 à 11:33:31  profilanswer
 

Bonjour tout le monde,
 
Voila j'ai un soucis qui m'embete depuis un petit moment.
Je souhaiterais lister tous les fichiers php d'une arborescence (a savoir qu'il existe des .php, .php4, .php5, .php.old, .php_backup)
 
Comment puis-je faire ca avec la commande find ?
 
Je n'ai trouvé que ceci :
find . -type f \( -iname '*.php' -o -iname '*.php3' -o -iname '*.php4' -o -iname '*.php5' \)
 
mais je ne trouve pas cela super propre, j'aurais bien vu une petite expression régulière mais impossible d'arriver au même résultat  :heink:  
 
Avez vous une idée ?
Merci  :wahoo:  ;)


Message édité par Yop69 le 27-05-2006 à 10:42:56
mood
Publicité
Posté le 26-05-2006 à 11:33:31  profilanswer
 

n°1375703
Sve@r
Posté le 26-05-2006 à 18:54:40  profilanswer
 

find . -type f -name "*.php*" ;)


Message édité par Sve@r le 26-05-2006 à 18:55:14

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1375734
Yop69
Posté le 26-05-2006 à 20:01:09  profilanswer
 

Merci pour ta réponse
 
Ta commande ne me convient pas... elle va me renvoyer les fichiers du genre toto.php.old et va aussi oublier les fichiers genre TOTO.PHP :)
Celle que j'ai fais renvoie le bon truc mais je voulais juste me servir des expressions régulières (avec la commande -regex par exemple) mais j'ai farfouillé partout sur le net testé plein de trucs et impossible de la faire fonctionner correctement...
 
 :(

Message cité 1 fois
Message édité par Yop69 le 26-05-2006 à 20:06:46
n°1375800
Sve@r
Posté le 26-05-2006 à 23:16:10  profilanswer
 

Yop69 a écrit :


Ta commande ne me convient pas... elle va me renvoyer les fichiers du genre toto.php.old et va aussi oublier les fichiers genre TOTO.PHP :)


 
find . -type f -name "*.[pP][hH][pP]*" -print  :sol:  


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1375870
0x90
Posté le 27-05-2006 à 01:59:16  profilanswer
 

-iname au lieu de -name :o
(i comme case insensitive :o)
lisez le man bon sang :o

Message cité 1 fois
Message édité par 0x90 le 27-05-2006 à 01:59:29

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1375902
Yop69
Posté le 27-05-2006 à 09:39:44  profilanswer
 

0x90 a écrit :

-iname au lieu de -name :o
(i comme case insensitive :o)
lisez le man bon sang :o


 
Lisez les posts bon sang :o
 
Si tu avais lu mon premier post, tu aurais vu que je l'avais déjà employé le iname. Le man ça fait des lustres que je le décrypte et en passant, je n'ai jamais compris pourquoi il était aussi à chier  :lol:  
 
Genre il n'y a aucun exemple dedans et c'est bien regrettable (à la façon de la doc php) car souvent c'est un peu ambigu leur explication
 

n°1375904
Yop69
Posté le 27-05-2006 à 09:41:07  profilanswer
 

Sve@r a écrit :

find . -type f -name "*.[pP][hH][pP]*" -print  :sol:


 
 
Yes je vais tester ça, ça à l'air pas mal du tout !!  :love:  
 
Mais non je suis bête, cela ne marche pas !!!  :D  
 
Le * à la fin va prendre autant de caractère qu'il y en a :)
Il faudrait le joker "?"
 
genre find . -type f -regex "*.php[3-5]?" -print
 
Vous voyez ce que j'aimerais ? ce n'est pas la casse qui me pose un problème ( genre find . -type f -regex "*.[pP][hH][pP][3-5]?" -print le résoud bien ) mais le fait de prendre que les fichiers [*.php] [*.php3] [*.php4] [*.php5] et pas [*.php*] qui elle me prend trop de truc.
 
J'en viens un peu à la conclusion que la commande find est méga super puissante mais que non elle ne peut faire ça (ça m'étonne quand même beaucoup, je suis sur qu'il y a un moyen efficace en expression régulière)
 
Tant pis au pire je prendrais ma bidouille avec le OU logique (-o)
 
merci quand même Sve@r et 0x90  ;)


Message édité par Yop69 le 27-05-2006 à 09:49:39
n°1375910
0x90
Posté le 27-05-2006 à 10:07:58  profilanswer
 

Yop69 a écrit :

Lisez les posts bon sang :o
 
Si tu avais lu mon premier post, tu aurais vu que je l'avais déjà employé le iname. Le man ça fait des lustres que je le décrypte et en passant, je n'ai jamais compris pourquoi il était aussi à chier  :lol:  
 
Genre il n'y a aucun exemple dedans et c'est bien regrettable (à la façon de la doc php) car souvent c'est un peu ambigu leur explication


 
Oops jme suit fait avoir par l'horreur du post juste au dessus :ange:
 
Bon allez pour me faire pardonner :


find . -iregex ".*php[3-5]?"


Et ca marche très bien je viens de tester :o


╭─────╮
│10:11├────╌╌┄ ~/extest ┄╌╌──➝
╯┄┄┄┄┄╰─➝ ls
lala.php  lala.php3  lala.php4  lala.php5  lala.php8  lala.phplop
╭─────╮
│10:12├────╌╌┄ ~/extest ┄╌╌──➝
╯┄┄┄┄┄╰─➝ find . -iregex ".*php[3-5]?"
./lala.php3
./lala.php4
./lala.php5
./lala.php


 
[edit]Oula le prompt passe mal sur hfr ...

Message cité 2 fois
Message édité par 0x90 le 27-05-2006 à 10:08:27

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1375917
Yop69
Posté le 27-05-2006 à 10:34:22  profilanswer
 

0x90 a écrit :

Oops jme suit fait avoir par l'horreur du post juste au dessus :ange:
 
Bon allez pour me faire pardonner :


find . -iregex ".*php[3-5]?"


Et ca marche très bien je viens de tester :o


╭─────╮
│10:11├────╌╌┄ ~/extest ┄╌╌──➝
╯┄┄┄┄┄╰─➝ ls
lala.php  lala.php3  lala.php4  lala.php5  lala.php8  lala.phplop
╭─────╮
│10:12├────╌╌┄ ~/extest ┄╌╌──➝
╯┄┄┄┄┄╰─➝ find . -iregex ".*php[3-5]?"
./lala.php3
./lala.php4
./lala.php5
./lala.php


 
[edit]Oula le prompt passe mal sur hfr ...


 
Bon sang mais bien sur !!
 
quand j'utilisais -regex je faisais ca "*.php" alors que j'avais oublié que le point est un joker... et que donc c'est l'inverse ".*php[3-5]?"
 
on pourrait même la paufiner : find . -iregex ".*\.php[3-5]?" non ?
 
en tout cas merci beaucoup  :love: tu t'es largement fait pardonner  :D


Message édité par Yop69 le 27-05-2006 à 10:34:41
n°1375920
Yop69
Posté le 27-05-2006 à 10:42:06  profilanswer
 

Je viens de tester sur mon shell windows et donc la commande :
 
find . -iregex ".*\.php[3-5]?"
 
permet donc de lister tous les fichiers php valides d'une arborescence...
 
 
YES ! vive Cygwin au passage :)
 
 :jap: Merci à vous !  :jap:


Message édité par Yop69 le 27-05-2006 à 10:44:18
mood
Publicité
Posté le 27-05-2006 à 10:42:06  profilanswer
 

n°1375952
Sve@r
Posté le 27-05-2006 à 12:38:17  profilanswer
 

0x90 a écrit :

Oops jme suit fait avoir par l'horreur du post juste au dessus :ange:


 
Oh mais oh !!! Mais quoi que donc ??? C'est quoi qui est l'horreur ???
 
En plus, tous les find ne connaissent pas "-iname" (comme tous ne connaissent pas "-newer" ou "-mindepth" )...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1375953
Yop69
Posté le 27-05-2006 à 12:41:50  profilanswer
 


 
Fight !  :bounce:  
 
 :lol:

n°1376020
Sve@r
Posté le 27-05-2006 à 18:24:13  profilanswer
 

Yop69 a écrit :

Fight !  :bounce:  
 
 :lol:


Mais non, pas fight.
S'il connait un truc mieux que ce qui a été dit, il a le droit de le dire. Mais il y a la manière...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1376029
Yop69
Posté le 27-05-2006 à 19:09:10  profilanswer
 

Sve@r a écrit :

Mais non, pas fight.
S'il connait un truc mieux que ce qui a été dit, il a le droit de le dire. Mais il y a la manière...


 
Je suis tout à fait d'accord avec toi...
 
Surtout quand on se permet "d'apprendre" aux autres de lire la doc alors que lui même ne lit pas nos indications... mais bon ce n'est pas bien grave, j'espère que cela lui aura servi un peu de leçon  :o , et de plus il a fait un bon effort pour aider donc c sympas...

n°1376034
0x90
Posté le 27-05-2006 à 19:25:09  profilanswer
 

Hého ca va vous êtes bien gentils mais :
- Il était 2h du mat'
- Le titre parle de commande sous Linux, des Linux sans les outils GNU y'en a pas des masses, je pouvais donc considérer avoir affaire au find de GNU qui gère -iname
- Si on peut craindre l'absence de -iname on peut aussi bien craindre aussi celle de -regex vu qu'aucun des deux n'est POSIX.1
- faire des [hH] c'est mauche je persiste :o
- La section sur -regex contient des exemples ou son utilisation est bien claire.

Citation :


       -regex pattern
              File name matches regular expression pattern.  This is  a  match
              on  the  whole path, not a search.  For example, to match a file
              named `./fubar3', you can use the regular expression `.*bar.' or
              `.*b.*3',  but  not `f.*r3'.  The regular expressions understood
              by find are by default Emacs Regular Expressions, but  this  can
              be changed with the -regextype option.


 
Cela dit, on va pas rester 107 ans sur le sujet...

Message cité 1 fois
Message édité par 0x90 le 27-05-2006 à 19:25:57

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1376038
Sve@r
Posté le 27-05-2006 à 19:40:27  profilanswer
 

0x90 a écrit :

Hého ca va vous êtes bien gentils...


[:ddr555]

0x90 a écrit :

Le titre parle de commande sous Linux, des Linux sans les outils GNU y'en a pas des masses, je pouvais donc considérer avoir affaire au find de GNU qui gère -iname


En effet, là t'as raison. C'est moi qui ne me souvenais plus de cette option...
 

0x90 a écrit :

faire des [hH] c'est mauche je persiste


On n'a pas la même vision de ce qui est "moche" de ce qui ne l'est pas... et il y a des cas où c'est nécessaire => par exemple un case qui teste si une réponse donnée est "oui" ou "non" avec gestion de la casse...
case $rep in
   [oO][uU][iI]) ...;;
   [nN][oO][nN]) ...;;
esac
 => je sais, on peut transformer la réponse en minuscules avant le case avec "tr" mais dans ce cas, il y a génération d'un processus supplémentaire donc ralentissement
 

0x90 a écrit :

Cela dit, on va pas rester 107 ans sur le sujet...


Certes...


Message édité par Sve@r le 27-05-2006 à 19:43:02

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1376043
0x90
Posté le 27-05-2006 à 19:48:21  profilanswer
 

Pour le bash, je crois qu'on va pas débatre d'une syntaxe moche ou non du genre le case, on parle de bash quoi ^^


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1376044
Yop69
Posté le 27-05-2006 à 19:51:12  profilanswer
 

:)
 
Qu'il soit 2h ou 5h ou 13h n'a jamais été une excuse pour moi et j'essaie de rester courtois tout le temps maintenant je comprends que j'ai pu mal m'exliquer car à vrai dire je ne connais pas trop bien le monde linux (et encore moins POSIX :) )
 
Maintenant j'avais la solution à la base mais j'en voulais une "plus propre" par le biais des expressions régulières et on l'a trouvé donc merci bien.
 
Le seul soucis la-dedans a juste été le ton un peu trop "moi je sais et je vous apprends" qu'on t'as reproché c'est tout.
et quand tu mets "vous êtes bien gentils" tu restes dans ton style "je suis supérieur (bah oui les gens gentils sont on le sait très bien, neuneux....)"
 
Voila après moi je m'en tape j'ai eu ma solution  [:yop69]  
Et encore merci  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Commande find sous linux [RESOLU]

 

Sujets relatifs
[Résolu] Script de transfère de base de donnée[RESOLU] initialisation de maps
[RESOLU] Traduction BBCode html[JS/DOM] Bug sous IE, l'image se s'affiche pas ! [RESOLU]
[Java] Problème échanges client-serveur (Résolu)[Résolu] Appel de destructeur après avoir utilisé une dll
Securisation d'un script de listage de fichiers [resolu][RÉSOLU] Nom de fonction non reconnu
[Oracle] Execute Immediate ne fait rien ... ?[résolu]nouvelle fenetre de commande à partir d'une fenetre de commande
Plus de sujets relatifs à : Commande find sous linux [RESOLU]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)