Rechercher : dans
Par :

Commande find echoue

Dernière réponse le 29 mar 2005 à 19:26:57 calaceite, le 28 mar 2005 à 11:22:31 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « Commande find echoue » dans :
[Commande] “grep” récursif VoirLorsque l'option -r (ou -d recurse) de la commande grep n'est pas disponible, comme sous HP-UX, il faut l'utiliser conjointement avec la commande find. Par exemple, pour chercher récursivement la chaîne «CCM» dans tous les fichiers réguliers à...
Liste des commandes Windows VoirRemarques : Certaines commandes sont dangereuses (l’exemple de SYSKEY) et peuvent causer des problèmes pouvant conduire au formatage. D’autres commandes ne sont pas exécutables sous Windows XP ou des versions antérieures, je ne les ai pas...
[MS-Dos] Commandes DOS de base VoirCes commandes sont des commandes de base que vous pouvez utiliser dans un prompt DOS, par exemple, sur une disquette de démarrage. Pour obtenir plus d'informations sur ces commandes, tapez (dans un prompt DOS), le nom de votre commande suivi de...
Télécharger 2 Find MP3 VoirLa recherche de fichiers MP3 sur Internet est devenue monnaie courante pour bon nombre d'internautes et de mélomanes en tout genre. 2 Find MP3 est comme son nom le laisse suggérer, une application permettant de retrouver rapidement des fichiers MP3...
Commandes Linux VoirTableau des principales commandes Linux Commande Description équivalent DOS ls liste le contenu d'un répertoire dir cd change de répertoire cd cd .. répertoire parent cd.. mkdir crée un nouveau...
Commandes UNIX VoirTableau des principales commandes UNIX Commande Unix Description Options ls liste le contenu d'un répertoire -a Affiche tous les fichiers, y compris les fichiers cachés ...
Les commandes AS/400 VoirLes commandes de l’AS/400 Il existe environ un millier de commandes dans l'OS/400, regroupées sous le nom de « Langage de Contrôle ». Un utilisateur pourra les lancer depuis la ligne Option ou Commande située au bas de l'écran, quand celle-ci est...

1

jipicy, le 28 mar 2005 à 11:49:53

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.
;-)) Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé. 

Répondre à jipicy

2

calaceite, le 28 mar 2005 à 12:16:25

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

Répondre à calaceite

3

kmf, le 28 mar 2005 à 12:45:00

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.).

Répondre à kmf

4

calaceite, le 28 mar 2005 à 14:47:12

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

Répondre à calaceite

5

jisisv, le 28 mar 2005 à 15:57:42

Ou encore

johand@horus:~$ find . -name "\.*" | head -6
.
./.bashrc
./.bash_profile
./.bash_history
./.xsession-errors
./GNUstep/Library/WindowMaker/.fonts_converted


Johan Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)

Répondre à jisisv

6

calaceite, le 28 mar 2005 à 16:02:47

johand@horus:~$ find . -name "\.*" | head -6

Houlala, quelqu'un peut-il commenter svp ?


Calaz

Répondre à calaceite

7

kmf, le 28 mar 2005 à 16:37:35

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

Répondre à kmf

8

calaceite, le 28 mar 2005 à 17:47:59

OK, c'est clair, merci kmf.


CaLaZ

Répondre à calaceite

9

lami20j, le 29 mar 2005 à 07:08:36

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



@+

Répondre à lami20j

11

asevere, le 29 mar 2005 à 07:44:40

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'.

@+ ...Mana mana
   Tutudutu...

Répondre à asevere

10

lami20j, le 29 mar 2005 à 07:13:41

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

Répondre à lami20j

12

 lami20j, le 29 mar 2005 à 19:26:57
  • +1

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"

Répondre à lami20j