Commande find echoue

Fermé
calaceite Messages postés 159 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 23 avril 2007 - 28 mars 2005 à 11:22
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 29 mars 2005 à 19:26
Bonjour,

Je cherche, avec la commande
find,
où se trouve un fichier dont le nom devrait être
.bashrc

(noter le point comme premier caractère).

Dans un xterm ça donne sous root :
---------------------
[root@localhost calaz]# find / -name "*bashrc*"
/etc/bashrc
---------------------
Pourtant, il existe bien un fichier /home/calaz/.bashrc alors pourquoi ma commande ci-dessus ne l'a pas trouvé, serait-ce parce que le fichier est un fichier caché ? J'ai bien fait
man find 
mais pas de trace d'option pour trouver des fichiers cachés. Merci de votre aide.

Calaz

11 réponses

Le fichier .bashrc est bien dans ton home mais pour le voir avec "ls" il faut ajouter la bonne option "-a", par exemple:
ls -al ~/

ou
ls -al ~/.*

ou
ls -al ~/.bash*

Ici le "-a" c'est pour voir le fichiers caches commencant avec un "." dans le nom et le "l" derrier pour plus d'infos (longueur de fichier, date de derniere modif etc.).
1
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
29 mars 2005 à 19:26
Bonjour à tous,

asevere a dit :

"Peut-etre parceque une expression réguliére pour trouver le nom ".bashrc" ne sert strictement a rien. " et il a parfaitement raison.

Si on écrit /\.bashrc/ on n'a qu'une expression littérale en aucun cas une expréssion régulière et c'est vrai que dans ce cas find tout seut et plus que suffisant.

Pour des recherches plus détaillées en revanche on peut (on n'est pas obligé) les utiliser.
Il faut choisir entre la vitesse d'éxécution et la précision (dès fois on peut les obtenire toutes les deux - tant mieux). Ca depend de ceux qu'on veux.
Quand je fait une recherche en local j'utilise d'habitude find tout seul parce que je sais ce que j'ai sur mon PC.
En revanche quand je donne un coup de main à mes amis sur net je préfére utiliser find en combinaison avec d'autre utilitaires.

Dès fois il y a une coupure de courant et on doit utiliser la tournevis mécanique.


@+


P.S. Et je ne veux pas faire la guere ni imposer ma façon de travailler (chez moi donne des résultats donc je suis content).
C'est en fait comme ça qu'on progresse avec des "disputes" amicales.


"Il y a toujours plusieurs façon de le faire"
1
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
28 mars 2005 à 11:49
Salut,

Sachant que l'option pour un fichier caché est le point ".", autant le signifier dans sa recherche, non ?
Donc autant écrire directement :
find /home/calaz/ -name .bashrc
Et dans le "man find" on trouve :
-name motif
              Fichier  dont  le  nom  de  base (sans les répertoires du chemin
              d'accès), correspond au motif  du  shell.   Les  méta-caractères
              (`*', `?', et `[]') ne sont jamais mis en correspondance avec un
              point `.'  au début du nom.  Pour ignorer un  répertoire,  ainsi
              que  tous  ses  sous-répertoires, utiliser l'option -prune; vous
              trouverez un exemple dans la description de l'option -path.
;-))
0
calaceite Messages postés 159 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 23 avril 2007 10
28 mars 2005 à 12:16
Merci de te réponse, rapide de surcroît.

Sachant que l'option pour un fichier caché est le point ".", autant le signifier dans sa recherche, non ?

Oui mais quand on est sûr que le fichier est vraiment caché. Sinon il faut faire _deux_ recherches (une avec un point l'autre sans et c'est d'ailleurs ainsi que j'ai trouvé mon fichier).

Et dans le "man find" on trouve : ...
oui, j'avais lu mais je n'avais pas réalisé qu'effectivement ça explique pourquoi ça ne marchait pas ;)
Au passage, je vois que tu as les pages man en français (pas moi pourtant la langue déclarée est le français).

Malgré tout, je vais encore chercher pour voir si on ne peut pas faire la recherche via une seule commande (ou alors faudra faire un alias, c'est justement ça que j'examine actuelement ;) ).

Bye et merci,

Calaz
0

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

Posez votre question
calaceite Messages postés 159 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 23 avril 2007 10
28 mars 2005 à 14:47
Malgré tout, je vais encore chercher ...

En utilisant find avec une expression régulière on obtient les deux fichiers, celui avec point initial et sans point initial :
---------------------------
[root@localhost calaz]# find / -regex '.*bashrc.*'
/home/calaz/.bashrc
/home/bill/.bashrc
/etc/skel/.bashrc
/etc/bashrc
/root/.bashrc
---------------------------


Calaz
0
jisisv Messages postés 3645 Date d'inscription dimanche 18 mars 2001 Statut Modérateur Dernière intervention 15 janvier 2017 934
28 mars 2005 à 15:57
Ou encore
johand@horus:~$ find . -name "\.*" | head -6
.
./.bashrc
./.bash_profile
./.bash_history
./.xsession-errors
./GNUstep/Library/WindowMaker/.fonts_converted


Johan
0
calaceite Messages postés 159 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 23 avril 2007 10
28 mars 2005 à 16:02
johand@horus:~$ find . -name "\.*" | head -6

Houlala, quelqu'un peut-il commenter svp ?


Calaz
0
find . -name "\.*"

ca fait en principe la meme chose que:

find . -name .*

sauf que cette facon ne marche pas parce que le point est un caracter special.

En princip ca cherche tous les fichier avec un point au debut dans. Le 1er point represente le repertoire actuel pour la recherche. Apres le truc "\.*" est necessaire pour tenir compte du caractere special point. Le \ et les "..." font en sorte de ``proteger'' le point (a cause de la shell).

| head -6

Ca n'affiche que les premieres 6 lignes de ce que la commande precedente produit. Regarde ici:
http://doc.mandrakelinux.com/MandrakeLinux/100/fr/Command-Line.html/command-files.html#command-cat
0
calaceite Messages postés 159 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 23 avril 2007 10
28 mars 2005 à 17:47
OK, c'est clair, merci kmf.


CaLaZ
0
Salut calaceite,

Je vois que kmf t'as donné la solution.

Cependant ce qui m'etonne beaucoup c'est que personne n'envisage utiliser le puissant find avec egrep et/ou perl pour les expressions régulières.
On peut bien peaufiner les cherches grâce aux expressions régulières.


Ajouté par calaceite (28/03/2005 à 14:47 GMT+1)

Malgré tout, je vais encore chercher ...

En utilisant find avec une expression régulière

C'est toi qui l'as dit (find contient des options pour les motifs mais ne sont pas très puissantes ) et c'est à toi aussi de voir



@+
0
asevere Messages postés 13084 Date d'inscription lundi 28 janvier 2002 Statut Webmaster Dernière intervention 3 février 2022 426
29 mars 2005 à 07:44
Bonjour,
Peut-etre parceque le puissant find suffit amplement à cette recherche.
Peut-etre parceque une expression réguliére pour trouver le nom ".bashrc" ne sert strictement a rien.

J'ai l'impression de me repeter la, mis tant pis:
find à juste ce qu'il faut de joker pour réaliser la plutpart des recherhes 'utiles'.

@+
0
En fait ce n'est pas ça que je voulais dire

"options pour les motifs mais ne sont pas très puissantes"

Plutôt que find n'a pas trop d'options pour les motifs ou bine que l'implementation des expressions régulières n'est pas comme dans perl (ici tu peut vraiment voir la puissance des expressions régulières) ou egrep
0