[find] Bug ??

tlep Messages postés 597 Statut Membre -  
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   -
Bonjour,

J'ai des bugs bizarres avec la commande find :
Exemple :
find /home/outils/log -name *.txt
find: paths must precede expression
Usage: find [path...] [expression]

Par contre :
find /home/outils/log -name *.csv
ca marche !

J'ai pas mal de cas bizarres comme celui-ci, aussi bien sur une debian que sur une redhat !

Si vous avez des suggestions je suis preneur !

Thierry
A voir également:

8 réponses

tlep Messages postés 597 Statut Membre 118
 
J'ajoute que si je mets des guillemets, çà marche:
find /home/outils/log -name "*.txt"

Mais dans un script ca ne marche plus :

for i in `find /home/outils/log -name "*.txt"`;do
echo $i
done

-> find: paths must precede expression
Usage: find [path...] [expression]

:-((
0
dubcek Messages postés 19030 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
Est-ce que le répertoire ou est exécutée la commande contient des fichiers .txt ?
0
tlep Messages postés 597 Statut Membre 118
 
Non, il n'en contient pas, mais il ne contient pas non plus de fichiers csv !
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bonjour,

Il ne contient pas non plus de fichiers cachés ?

L'idéal, serait que tu nous donne le resultat complete des commandes suivantes (par copier/coller):
$ ls -alR /home/outils/log
$ find /home/outils/log -name *.txt
$ find /home/outils/log -name *.csv
@+

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 19030 Date d'inscription   Statut Contributeur Dernière intervention   5 640
 
Pour ne pas interprétée par le shell l'étoile du find DOIT être protégée:
find -name \*.txt ...
find -name "*.txt" ...
find - name '*.txt' ...

un alias peut-être ?
\find /home/outils/log -name \*.txt

quel find ?
whereis find
0
tlep Messages postés 597 Statut Membre 118
 
ls -alR /home/outils/log
/home/outils/log:
total 268
drwxrwx--- 2 outils www-data 16384 2007-07-16 10:11 .
drwxr-xr-x 5 outils outils 4096 2007-07-16 12:05 ..
-rw-rw-rw- 1 outils outils 250 2007-07-09 09:20 Log_REJEU_DISE_09072007.log
-rw-rw-rw- 1 outils outils 250 2007-07-10 09:20 Log_REJEU_DISE_10072007.log
-rw-rw-rw- 1 outils outils 186104 2007-07-11 10:37 Log_REJEU_DISE_11072007.log
-rw-rw-rw- 1 outils outils 547 2007-07-12 10:48 Log_REJEU_DISE_12072007.log
-rw-rw-rw- 1 outils outils 250 2007-07-13 09:20 Log_REJEU_DISE_13072007.log
-rw-rw-rw- 1 outils outils 250 2007-07-14 09:20 Log_REJEU_DISE_14072007.log
-rw-rw-rw- 1 outils outils 250 2007-07-15 09:20 Log_REJEU_DISE_15072007.log
-rw-rw-rw- 1 outils outils 250 2007-07-16 09:20 Log_REJEU_DISE_16072007.log
-rw-rw-rw- 1 outils outils 268 2007-07-09 09:20 Log_REJEU_DISE_BZH_09072007.log
-rw-rw-rw- 1 outils outils 268 2007-07-10 09:20 Log_REJEU_DISE_BZH_10072007.log
-rw-rw-rw- 1 outils outils 1914 2007-07-11 10:37 Log_REJEU_DISE_BZH_11072007.log
-rw-rw-rw- 1 outils outils 583 2007-07-12 10:48 Log_REJEU_DISE_BZH_12072007.log
-rw-rw-rw- 1 outils outils 268 2007-07-13 09:20 Log_REJEU_DISE_BZH_13072007.log
-rw-rw-rw- 1 outils outils 268 2007-07-14 09:20 Log_REJEU_DISE_BZH_14072007.log
-rw-rw-rw- 1 outils outils 268 2007-07-15 09:20 Log_REJEU_DISE_BZH_15072007.log
-rw-rw-rw- 1 outils outils 268 2007-07-16 09:20 Log_REJEU_DISE_BZH_16072007.log

(Pourquoi 268 ???)

find /home/outils/log -name *.txt
find: paths must precede expression
Usage: find [path...] [expression]

find /home/outils/log -name *.csv
-> RIEN

Si je fais un touch /home/outils/log/test.txt puis
find /home/outils/log -name *.txt
find: paths must precede expression
Usage: find [path...] [expression]

Par contre:
find /home/outils/log -name \*.txt
/home/outils/log/test.txt

Je ne vois pas pourquoi il faut échapper * pour txt ??
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bonche y'a un mystere là :)

En fait, quand tu fais find [...] -name *.txt , si le repertoire contient des fichiers a.txt b.txt, l'expansion fait que ton find est en fait find [...] -name a.txt b.txt , c'est exactement le même fonctionnement qu'un ls *txt.

Par contre, là, comme il n'y a pas de fichier *.txt ou .*.txt il y a un soucis :(

Dans le doute, quer te donne la commande shopt, et quel interpreteur utilises tu (bash?) ?

@+
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
PS: le 268 c'est le nombre de block utilisés (en admettant que la taille d'un block soit de 1Ko)

++
0
tlep Messages postés 597 Statut Membre 118
 
shopt
cdable_vars off
cdspell off
checkhash off
checkwinsize on
cmdhist on
dotglob off
execfail off
expand_aliases on
extglob off
histreedit off
histappend off
histverify off
hostcomplete on
huponexit off
interactive_comments on
lithist off
login_shell on
mailwarn off
no_empty_cmd_completion off
nocaseglob off
nullglob off
progcomp on
promptvars on
restricted_shell off
shift_verbose off
sourcepath on
xpg_echo off

C'est bizarre, j'ai le meme souci sur une redhat (sur un autre motif de fichier et sur un autre répertoire)

C'est encore plus bizarre que l'échappement devant * fonctionne: il ne devrait pas trouver avec
find /home/ -name "\*.csv" ?
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Bingo! :)

Je suis sous mac, donc je n'ai pas le même message exactement, mais le problème est le même, comme quoi 1 heure de métro, ça permet de réfléchir...
PBG4:~ adrien$ mkdir -p test4tlep/home/outils/log
PBG4:~ adrien$ cd test4tlep/
PBG4:~/test4tlep adrien$ touch a.txt b.txt
PBG4:~/test4tlep adrien$ for i in a b c d e f g h; do
> touch home/outils/log/$i.log
> done
PBG4:~/test4tlep adrien$ find home/outils/log/ -name *.txt
find: b.txt: unknown expression primary
PBG4:~/test4tlep adrien$
En gros, l'expansion est (très logiquement) faite dans le répertoire d'où est lancé le find :-)
0
tlep Messages postés 597 Statut Membre 118
 
Je ne comprends pas: "l'expansion est faite dans le répertoire d'où est lancé le find"

Tu as compris le souci ??
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426
 
Oui, j'ai compris (en tout cas, je le reproduit).

Si je reprend l'exemple que j'ai donné au dessus
#Création de l'arborescence de test
PBG4:~ adrien$ mkdir -p test4tlep/home/outils/log
PBG4:~ adrien$ cd test4tlep/
#Création dans le répertoire courant des fichier a.txt et b.txt
PBG4:~/test4tlep adrien$ touch a.txt b.txt
#Création des fichiers de log dans le répertoire cible de la commande find à jouer
PBG4:~/test4tlep adrien$ for i in a b c d e f g h; do
> touch home/outils/log/$i.log
> done
#Commande find a partir du repertoire test4tlep
PBG4:~/test4tlep adrien$ find home/outils/log/ -name *.txt
find: b.txt: unknown expression primary
#dans le repertoire test4tlep *.txt devient "a.txt b.txt" d'où l'erreur, c'est troublant parcequ'on demande a find de chercher dans un autre répertoire (home/outils/log/) mais il est tout a fait logique que l'expansion soit faite a partir du répertoire courant comme dans ls *.txt
PBG4:~/test4tlep adrien$
En gros, dans mon exemple, taper la commande find home/outils/log/ -name *.txt dans le répertoire test4tlep revient a taper la commande find . -name a.txt b.txt dans le répertoire test4tlep/home/outils/log/

Sinon, comment va ?
Toujours à Nantes ?
0
tlep Messages postés 597 Statut Membre 118
 
On approche de l'explication.

En fait il y a 3 comptes root sur la machine:
root /root
root2 /home/root2
root3 /home/root3

(Tous les 3 ont UID=0)

Je m'aperçois que, quelque soit l'utilisateur (root, root2, root3), le find plante avec le motif "*.txt" dès qu'il est exécuté dans le répertoire /home/root2:

su root
cd /home/root2
find /home/outils/log -name *.txt
find: paths must precede expression
Usage: find [path...] [expression]
cd ..
find /home/outils/log -name *.txt
/home/outils/log/test.txt

C dingue hein ? :-))

-Ben non chuis a Redon en télétravail; et toi à toujours à Nantes ?
0
asevere Messages postés 13095 Date d'inscription   Statut Webmaster Dernière intervention   426 > tlep Messages postés 597 Statut Membre
 
Pour le moment à Paris / La Défense dans une grosse SSII...
0