Pages : 1
#1 Le 30/03/2008, à 18:35
- SiscoL
Une recherche de fichiers qui devrait aboutir ?
Bonjour à tous,
Je ne suis pas sûr d'être sur la bonne catégorie, je n'en suis pas sûr.
J'ai Ubuntu 7.10 depuis peu. D'avance, pardon pour mes questions basiques.
1) Sur mon bureau, j'ai un fichier monP.py, c'est un simple fichier de texte.
Sur Gnome, je vais dans raccourcis --> Rechercher des fichiers.
Pour le nom du fichier je tape : monP.py
Pour rechercher dans le dossier, je mets : Système de fichiers
Je lance la recherche. Pas de fichier trouvé, alors que le fichier monP.py existe et je l'ai sous les yeux !?
Une explication ?
2) J'aimerais bien pouvoir faire un telle recherche sur le terminal en ligne de commandes. Comment fait-on ?
3) Comment recherche-t-on un dossier (pas un fichier !). Par exemple, supposons que j'ai quelque part un dossier caché .pyc. Comment lancer une recherche pour le localiser ? J'aimerais bien avoir la méthode graphique et la méthode ligne de commande si c'est possible.
Merci d'avance pour votre aide.
Dernière modification par SiscoL (Le 30/03/2008, à 19:11)
François
Hors ligne
#2 Le 30/03/2008, à 19:12
- Ferod
Re : Une recherche de fichiers qui devrait aboutir ?
Salut
1) C'est parce que tu le cherche pas dans le bon endroit. En fait tout tes fichiers du bureau sont dans ton home.
2) une fois que tu as ouvert un terminal, tu vas dans le dossier dans lequel tu veux chercher et tu tapes :
soit : find . -name monP.py
soit : find . | grep monP.py
la première est à utiliser si tu es sûr du nom du fichier que tu cherches, la deuxième te renverra tous les fichier ou dossier dont le nom contient monP.py.
3) En utilisant la méthode graphique j'ai pas trouvé par contre pour la ligne de commande c'est :
find . -type d -name .pyc
find . -type d | grep .pyc
NB : find c'est la commande pour chercher, le "." veut dire chercher à partir d'ici mais je pense que tu peux remplacer le point par l'adresse du dossier où tu veux chercher (/media/documents/ par exemple), après l'option '-type' c'est pour choisir le type de fichier (d pour directory, f pour fichiers, etc...), et l'option '-name' c'est le nom du fichier que tu recherche.
La commande '|' te permet de diriger la sortie d'une commande vers l'entrée d'une autre. par exemple 'find . -type d' te renvoie tout les dossiers et sous dossiers à partir du dossier courant et c'est dans cette liste que tu demande de faire une recherche sur les noms et de n'afficher que ceux qui contiennent le nom .pyc
Tu verras d'autres options de find en tapant "man find" dans un terminal.
Dernière modification par Ferod (Le 30/03/2008, à 19:23)
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#3 Le 30/03/2008, à 19:48
- SiscoL
Re : Une recherche de fichiers qui devrait aboutir ?
1) C'est parce que tu le cherche pas dans le bon endroit. En fait tout tes fichiers du bureau sont dans ton home.
Mais je croyais que le "système de fichier" était la racine de mon arborescence, l'équivalent de "Poste de travail" de Windows. Dans ce cas, j'ai deux questions :
a) À quoi correspond "Système de fichiers" dans l'arborescence de mon ordinateur ?
b) Comment fait-on alors pour lancer une recherche partant de la racine /, sans supposer que le fichier recherché se trouve dans tel ou tel dossier ? Ah ... en lisant la suite de ta réponse, je vois que c'est possible avec :
sudo find / | grep fichier.truc
J'ai l'impression que les recherches ne se font que là où on a le droit en écriture, non ? C'est pour cela que, s'il l'on veut faire une recherche depuis la racine, le sudo est nécessaire et que ce genre de recherche est sans doute impossible (ou au moins très déconseillée) en mode graphique. Est-ce juste ?
2) une fois que tu as ouvert un terminal, tu vas dans le dossier dans lequel tu veux chercher et tu tapes :
soit : find . -name monP.py
soit : find . | grep monP.pyla première est à utiliser si tu es sûr du nom du fichier que tu cherches, la deuxième te renverra tous les fichier ou dossier dont le nom contient monP.py.
Merci bien. C'est parfait. Il est grand temps que j'apprenne toutes ces commandes Unix. J'ai commandé un livre qui devrait arriver.
3) En utilisant la méthode graphique j'ai pas trouvé par contre pour la ligne de commande c'est :
find . -type d -name .pyc
find . -type d | grep .pycNB : find c'est la commande pour chercher, le "." veut dire chercher à partir d'ici mais je pense que tu peux remplacer le point par l'adresse du dossier où tu veux chercher (/media/documents/ par exemple), après l'option '-type' c'est pour choisir le type de fichier (d pour directory, f pour fichiers, etc...), et l'option '-name' c'est le nom du fichier que tu recherche.
Tu verras d'autres options de find en tapant "man find" dans un terminal.
Ok, merci pour ces explications très claires. grep est vraiment bien. L'ennui, c'est que, quand je tape :
find . -type f | grep truc
je pense chercher les fichier dont le nom contient la chaîne "truc", mais en fait par exemple, j'aurais comme retour :
./truc/machin.txt
Or, certes le chemin relatif contient la chaîne "truc", mais pas le nom du fichier pointé. Je n'ai pas trouvé l'option pour avoir une recherche du type grep, portant uniquement sur le nom du fichier et pas sur le chemin. Cela doit bien exister, non ?
Merci beaucoup pour ta réponse.
François
Hors ligne
#4 Le 30/03/2008, à 21:08
- Ferod
Re : Une recherche de fichiers qui devrait aboutir ?
Re
a) À quoi correspond "Système de fichiers" dans l'arborescence de mon ordinateur ?
Effectivement c'est ta partition racine, celle qui contient tous ce qui est nécessaire pour faire tourner ton ordi. Par contre c'est pas vraiment l'équivalent du poste de travail. C'est plutôt un répertoire qui regroupe program file (pour tous les executables) et le répertoire windows (tous les fichiers systèmes).
b) Comment fait-on alors pour lancer une recherche partant de la racine /, sans supposer que le fichier recherché se trouve dans tel ou tel dossier ?
Oui c'est bien "find / | grep truc" et normalement tu n'as pas besoin de mettre sudo. Il n'est pas nécessaire d'avoir les droits d'écriture pour faire une recherche. Heureusement !
L'ennui, c'est que, quand je tape :
find . -type f | grep truc
je pense chercher les fichier dont le nom contient la chaîne "truc", mais en fait par exemple, j'aurais comme retour :
./truc/machin.txt
Or, certes le chemin relatif contient la chaîne "truc", mais pas le nom du fichier pointé. Je n'ai pas trouvé l'option pour avoir une recherche du type grep, portant uniquement sur le nom du fichier et pas sur le chemin. Cela doit bien exister, non ?
Et ben t'as '-name' avec laquelle tu peux utiliser les caractères spéciaux * ou ? pour remplacer les caractères que tu ne connais pas. Donc si tu veux chercher les fichiers qui contiennent truc je pense que tu peux utiliser
find . -type f -name *truc*
Quelques sites de commandes en attendant ton bouquin :
http://www.shellunix.com/commandes.html
http://www.siteduzero.com/tuto-3-1840-0-reprenez-le-controle-avec-linux.html
(le dernier est bien : tu auras des infos sur l'arborescence des dossiers)
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#5 Le 30/03/2008, à 21:40
- SiscoL
Re : Une recherche de fichiers qui devrait aboutir ?
Oui c'est bien "find / | grep truc" et normalement tu n'as pas besoin de mettre sudo. Il n'est pas nécessaire d'avoir les droits d'écriture pour faire une recherche. Heureusement ! tongue
Mais pourtant quand je tape ça :
$ find / -type f -name notes*
J'obtiens des messages curieux, du genre :
find: /var/cache/system-tools-backends/backup: Permission non accordée
find: /var/run/sudo: Permission non accordée
find: /var/run/cups/certs: Permission non accordée
find: /var/spool/cron/atspool: Permission non accordée
find: /var/spool/cron/crontabs: Permission non accordée
find: /var/spool/cron/atjobs: Permission non accordée
.
.
.
Je n'ai pas ces curieux message avec sudo ?
Et ben t'as '-name' avec laquelle tu peux utiliser les caractères spéciaux * ou ? pour remplacer les caractères que tu ne connais pas. Donc si tu veux chercher les fichiers qui contiennent truc je pense que tu peux utiliser
find . -type f -name *truc*
Ah, bizarre. J'ai l'impression que ça ne marche pas.
Par exemple, quand je tape : find . -type f -name notes.ods
J'ai en retour : ./notes/notes.ods (on trouve le fichier notes.ods)
Mais quand je tape (toujours au même endroit bien sûr) : find . -type f -name notes*
Je n'ai rien en retour alors qu'Ubuntu devrait me proposer ./notes/notes.ods, non ?
Merci encore pour ton aide.
François
Hors ligne
#6 Le 31/03/2008, à 18:41
- Ferod
Re : Une recherche de fichiers qui devrait aboutir ?
Tiens moi aussi j'ai les mêmes messages (permission non accordée). Je sais pas trop d'où ça peut venir... Mais psychologiquement parlant je préfère éviter de trop lancer des commandes avec sudo dans la partition racine (je suis un peu parano). A choisir je préfère un message d'erreur plutôt que de tout planter...
Pour le deuxième problème, je vois pas trop... Je suis pas un expert en ligne de commande. Je commence à me débrouiller avec celles qu'on utilise le plus. Peut être que tu pourrais essayer avec find . -type f -name *notes* des fois qu'il n'affiche pas le résultat parce qu'il ne commence pas 'notes'...
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#7 Le 31/03/2008, à 19:40
- SiscoL
Re : Une recherche de fichiers qui devrait aboutir ?
Pour les messages, c'est bizarre en effet. Ce n'est pas grave.
Pour le la commande find . -type f -name notes*, ça marche mais pas toujours. Regarde ça, c'est assez étonnant (je ne fait que copier-coller). Je suis dans un répertoire quelconque de mon home :
xxx$ find . -type f -name notes*
./Releve_BacS/notes/notes.ods
./Releve_BacS/notes/notes.tex
./Releve_BacS/notes/notes.csv
Ubuntu a trouvé 3 fichiers avec un nom de la forme notes*
Ils sont inclus dans ./Releve_BacS/notes/. Allons dans le répertoire ./Releve_BacS/ et lançons la même recherche de cet endroit.
xxx$ cd Releve_BacS/
xxx/Releve_BacS$ find . -type f -name notes*
xxx/Releve_BacS$
Lors de la deuxième recherche, pas de fichiers avec un nom de la forme notes*, alors qu'on s'attend à une réponse comme :
./notes/notes.ods
./notes/notes.tex
./notes/notes.csv
Incroyable, non ???
François
Hors ligne
#8 Le 31/03/2008, à 23:52
- Ferod
Re : Une recherche de fichiers qui devrait aboutir ?
En effet...
Et je viens d'essayer moi aussi pour la deuxième commande lancée dans le dossier notes mais j'ai un message d'erreur :
find: les chemins doivent précéder l'expression
Usage: find [-H] [-L] [-P] [CHEMIN...] [EXPRESSION]
C'est au delà de mes compétences là...
C'est peut être le point qui rend l'expression particulière... Si on regarde bien les réponses qu'ils te donnent commencent toujours par './' et il ne peut pas te donner le nom du fichier directement en commençant par un point sinon ça fait un dossier ou un fichier caché. Par contre si tu lui spécifies une adresse complète là il va les trouver :
find ~/Releve_BacS/notes/ -type f -name notes*
"When I was in the military, they gave me a medal for killing
two men, and a descharge for loving one !" Leonard Matlovich
Hors ligne
#9 Le 01/04/2008, à 00:09
- SiscoL
Re : Une recherche de fichiers qui devrait aboutir ?
Oui, c'est étrange. Si quelqu'un a une idée sur la question...
En tous cas, merci beaucoup. Tu m'as déjà bien aidé.
A+
François
François
Hors ligne
#10 Le 02/04/2008, à 00:49
- SiscoL
Re : Une recherche de fichiers qui devrait aboutir ?
Finalement, après m'être renseigné ici ou là, il semble que la syntaxe à utiliser ne soit pas
find . -type f -name notes*
mais plus exactement
find . -type f -name "notes*"
avec les doubles quotes. Et là, plus de problème. Pourquoi ? Là, je ne sais pas trop. Là raison semble un chouilla subtil.
Dernière modification par SiscoL (Le 02/04/2008, à 00:50)
François
Hors ligne
Pages : 1