Commande find sous linux [RESOLU] - Shell/Batch - Programmation
Marsh Posté le 26-05-2006 à 18:54:40
find . -type f -name "*.php*"
Marsh Posté le 26-05-2006 à 20:01:09
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...
Marsh Posté le 26-05-2006 à 23:16:10
Yop69 a écrit : |
find . -type f -name "*.[pP][hH][pP]*" -print
Marsh Posté le 27-05-2006 à 01:59:16
-iname au lieu de -name
(i comme case insensitive )
lisez le man bon sang
Marsh Posté le 27-05-2006 à 09:39:44
0x90 a écrit : -iname au lieu de -name |
Lisez les posts bon sang
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
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
Marsh Posté le 27-05-2006 à 09:41:07
Sve@r a écrit : find . -type f -name "*.[pP][hH][pP]*" -print |
Yes je vais tester ça, ça à l'air pas mal du tout !!
Mais non je suis bête, cela ne marche pas !!!
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
Marsh Posté le 27-05-2006 à 10:07:58
Yop69 a écrit : Lisez les posts bon sang |
Oops jme suit fait avoir par l'horreur du post juste au dessus
Bon allez pour me faire pardonner :
|
Et ca marche très bien je viens de tester
|
[edit]Oula le prompt passe mal sur hfr ...
Marsh Posté le 27-05-2006 à 10:34:22
0x90 a écrit : Oops jme suit fait avoir par l'horreur du post juste au dessus
|
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 tu t'es largement fait pardonner
Marsh Posté le 27-05-2006 à 10:42:06
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
Merci à vous !
Marsh Posté le 27-05-2006 à 12:38:17
0x90 a écrit : Oops jme suit fait avoir par l'horreur du post juste au dessus |
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" )...
Marsh Posté le 27-05-2006 à 18:24:13
Yop69 a écrit : Fight ! |
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...
Marsh Posté le 27-05-2006 à 19:09:10
Sve@r a écrit : Mais non, pas fight. |
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 , et de plus il a fait un bon effort pour aider donc c sympas...
Marsh Posté le 27-05-2006 à 19:25:09
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
- La section sur -regex contient des exemples ou son utilisation est bien claire.
Citation : |
Cela dit, on va pas rester 107 ans sur le sujet...
Marsh Posté le 27-05-2006 à 19:40:27
0x90 a écrit : Hého ca va vous êtes bien gentils... |
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...
Marsh Posté le 27-05-2006 à 19:48:21
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 ^^
Marsh Posté le 27-05-2006 à 19:51:12
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
Et encore merci
Marsh Posté le 26-05-2006 à 11:33:31
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
Avez vous une idée ?
Merci
Message édité par Yop69 le 27-05-2006 à 10:42:56