[find] Bug ??
tlep
Messages postés
597
Statut
Membre
-
asevere Messages postés 13095 Date d'inscription Statut Webmaster Dernière intervention -
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
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:
- [find] Bug ??
- Bug chromecast - Guide
- Find and mount - Télécharger - Récupération de données
- Bug family link - Forum Contrôle parental
- Bug outlook - Guide
- Bug localisation snap ✓ - Forum Snapchat
8 réponses
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]
:-((
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]
:-((
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):
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@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
find -name \*.txt ...
find -name "*.txt" ...
find - name '*.txt' ...
un alias peut-être ?
\find /home/outils/log -name \*.txt
quel find ?
whereis find
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 ??
/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 ??
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?) ?
@+
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?) ?
@+
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" ?
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" ?
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...
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 :-)
Je ne comprends pas: "l'expansion est faite dans le répertoire d'où est lancé le find"
Tu as compris le souci ??
Tu as compris le souci ??
Oui, j'ai compris (en tout cas, je le reproduit).
Si je reprend l'exemple que j'ai donné au dessus
Sinon, comment va ?
Toujours à Nantes ?
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 ?
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 ?
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 ?