Page 1 sur 1

[find] comportement bizarre

Publié : mer. 14 déc. 2011, 10:26
par Arkadi510
Bonjour à tous,

voici ce que j'ai sur mon écran (session ssh sur un ordi Arch)

Code : Tout sélectionner

[root@GESTION ~]# find /srv -name glpi*
find: paths must precede expression: glpi-0.80.5.tar
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

[root@GESTION ~]# find /srv -name conf*
/srv/http/cacti/include/config.php
/srv/http/glpi/lib/ezcomponents/Base/src/interfaces/configuration_initializer.php
/srv/http/glpi/inc/config.class.php
/srv/http/glpi/config
/srv/http/glpi/config/config_db.php
/srv/http/glpi/config/config_db_old.php
/srv/http/glpi/config/config.php
/srv/http/glpi/ajax/config.tabs.php
/srv/http/glpi/front/config.form.php
La question: pourquoi avec le tempalte 'glpi*' il y a un message mais avec 'conf*' aucun message? Est-ce le comportement normal de cette commande? (à mon avis - pas du tout)

J'aimerais bien savoir vos avis, chère archèrs...

Re: Commande find - comportement bizarre

Publié : mer. 14 déc. 2011, 10:38
par oktoberfest
Salut,

personnellement je backslashe toujours le caractère * dans un find (find ... -name toto\*). Sinon bash va commencer par interpréter le * pour ensuite appeler find.
Dans ton répertoire courant, aurais-tu le fichier glpi-0.80.5.tar ?

Re: Commande find - comportement bizarre

Publié : mer. 14 déc. 2011, 10:39
par benjarobin
Il faut que tu rajoute des quotes (guillemets) autour de glpi*
Ce qui ce passe c'est que bash sinon exécute cette commande : find /srv -name glpi glpi_autre1 glpi_autre2 ...
Sinon merci d'utiliser les balises codes

Edit: Grillé :)

Re: Commande find - comportement bizarre

Publié : mer. 14 déc. 2011, 10:54
par chipster
Merci aussi de formater ton sujet comme il te l'a été demandé lors de la première édition :chinois:

Re: [find] comportement bizarre

Publié : mer. 21 déc. 2011, 20:53
par nowahn
Bonjour,

Que dit ls conf* glpi* ?

À mon avis, c'est Bash qui se comporte différemment entre les deux commandes (et c'est son comportement normal).

Comme déjà dit, si tu ne quote pas (avec un \ ou des "" ou '') tes patrons, ils sont d'abord interprétés par bash (il les remplace par la liste des fichiers qui correspondent, ou les laisse tel quel si rien ne correspond, voir man bash).

Je suppose que tu n'as pas de fichier conf* dans le répertoire d'où tu lances la commande, donc bash passe bien la chaîne 'conf*' à find.
Tu dois par contre avoir plusieurs (au moins deux) fichiers glpi* directement dans ce répertoire (glpi-0.80.5.tar doit être le deuxième que bash trouve).
Tu passes donc plusieurs noms à l'option -name, ce qui est une erreur.

Morale: toujours quoter les patrons pour la commande find.