Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/06/2006, 07h22   #1
Candidat au titre de Membre du Club
 
Inscription : juillet 2003
Messages : 93
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 93
Points : 12
Points : 12
Par défaut Recherche fichier Linux

Bonjour,

Quelle méthode puis-je utiliser pour rechercher sur mon disque tous les fichier qui ont, par exemple, une taille égale ou supérieure à 10 Mb ?
Quelle méthode puis-je utiliser pour rechercher tous les fichiers contenant une chaine de caractère xyz ?

D'avance merci pour votre aide.

Christian
c-ve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 08h11   #2
Membre émérite
 
Avatar de Pouic
 
Inscription : octobre 2004
Messages : 668
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2004
Messages : 668
Points : 904
Points : 904
man find
man grep
__________________
Software becomes slower faster than hardware becomes faster

http://xrenault.developpez.com
API C standard (C ANSI )
Pouic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 08h45   #3
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Citation:
Envoyé par Pouic
man find
man grep
Tout à fait ...

Et c'est aussi accessible en ligne sur http://man.developpez.com, ici :
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 10h41   #4
Candidat au titre de Membre du Club
 
Inscription : juillet 2003
Messages : 93
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 93
Points : 12
Points : 12
Merci pour l'info.
Mais en fait la commande find ne semble pas agir comme je le désire.
find / -size 100k me trouve les fichiers qui ont exactement 100k, ce que j'aimerais c'est qu'elle me trouve tout ce qui est égale ou supérieur.

Merci d'avance
c-ve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 10h54   #5
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Citation:
Envoyé par c-ve
find / -size 100k me trouve les fichiers qui ont exactement 100k
Et : Trouvera les fichiers de plus de 100k.


Et : Trouvera les fichiers de moins de 100k.
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 20h57   #6
Candidat au titre de Membre du Club
 
Inscription : juillet 2003
Messages : 93
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 93
Points : 12
Points : 12
En effet ca fonctionne merci :-)
Par contre avec grep ca ne donne rien, j'aimerai par exemple chercher sur la totalité de mon disque tous les fichier contenant le text org, mais ca ne marche pas
c-ve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 21h02   #7
Membre chevronné
 
Avatar de Tuxico
 
Étudiant
Inscription : août 2003
Messages : 662
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : août 2003
Messages : 662
Points : 697
Points : 697
il faut jouer avec find, grep mais la commande find / +100k | grep org te donnera aussi les fichiers ou org est dans le nom
__________________
★ Pascal/Java/C/xhtml,css/SQL/Mips
★ Linux/unix
Tuxico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 21h02   #8
Membre Expert
 
Avatar de granquet
 
Étudiant
Inscription : octobre 2005
Messages : 1 202
Détails du profil
Informations personnelles :
Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2005
Messages : 1 202
Points : 1 181
Points : 1 181
find / | grep org

y'as ptetre mieux ... (j'aurais pas du repondre :p)
__________________
click my www
............|___
...................\
.................._|_
..................\ /
..................."
granquet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 21h06   #9
Candidat au titre de Membre du Club
 
Inscription : juillet 2003
Messages : 93
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 93
Points : 12
Points : 12
Merci, mais en fait ca me donne la liste des fichiers dans le nom contient org, ce qu'il me fait c'est que org soit contenu dans le fichier et non dans son nom
c-ve est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2006, 21h26   #10
Membre Expert
 
Avatar de 2Eurocents
 
Inscription : septembre 2004
Messages : 2 180
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2004
Messages : 2 180
Points : 2 442
Points : 2 442
Attention, flinguage des performances en vue :
Code :
find / +100k -exec grep org {}\;
ou aussi :
Code :
grep org $(find / +100k -print)
Dans un cas comme dans l'autre, il ne faut pas espérer le résultat dans l'instant ... le disque dur va pas mal chauffer
__________________
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
2Eurocents est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 08h56   #11
Membre émérite
 
Inscription : mai 2004
Messages : 708
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 708
Points : 853
Points : 853
Pourquoi ne pas utiliser locate.

Si tu dois souvent faire ce genre de recherche un petit script utilisant locate devrait faire ça rapidement.

Un truc du genre:
Code :
1
2
3
4
5
6
7
8
9
10
#!/bin/sh
#
# exemple trouver tous les fichiers contenant "test" de plus de 500 octets
# -->  mylocate test 500
#
for fichier in $(locate $1 | grep '/'$1'[^/]*$')
do
     ls -l $fichier | awk '$5 >= '$2' {print}'
done
exit 0
Inconvénient: la bdd de locate doit être à jour. Mais, en général on met updatedb en cron une ou deux fois par jour, à des moments creux.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 14h36   #12
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
man grep donne :
grep -R pour recherche recurcive ..... pas terrible en performance mais faute de meiux ...
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/06/2006, 15h43   #13
Membre émérite
 
Inscription : mai 2004
Messages : 708
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 708
Points : 853
Points : 853
grep en tête de pipe (ha! ha!) fera une recherche sur le contenu des fichiers il me semble.

Il vaudrait donc d'abord mieux piper une liste de fichiers dans grep. Soit par un find comme suggéré plus haut soit avec un locate amélioré. Le résultat d'un locate est quasi immédiat pour une bdd à jour.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 06h12   #14
Invité de passage
 
Inscription : août 2003
Messages : 1
Détails du profil
Informations forums :
Inscription : août 2003
Messages : 1
Points : 1
Points : 1
Un simple :
find <rep> <options> -print | xargs grep <chaine>
amaymon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 08h13   #15
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
GREP(1)                                                                                                                 GREP(1)
 
NAME
       grep, egrep, fgrep - print lines matching a pattern
 
SYNOPSIS
       grep [options] PATTERN [FILE...]
       grep [options] [-e PATTERN | -f FILE] [FILE...]
 
DESCRIPTION
       Grep  searches  the  named  input FILEs (or standard input if no files are named, or the file name - is given) for lines
       containing a match to the given PATTERN.  By default, grep prints the matching lines.
 
..........
 
       -R, -r, --recursive
              Read all files under each directory, recursively; this is equiv-
              alent to the -d recurse option.
Il n'y a donc pas besoin de find ou autre devant, sauf a vouloir un filtre particulier sur le type de fichier.

UIL serait bon que certain prennent la peine de regarder le manuel et le fils de la question avant toutes reflexion ou affirmation.
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 08h45   #16
Membre émérite
 
Inscription : mai 2004
Messages : 708
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 708
Points : 853
Points : 853
Je viens de relire mon post plus haut qui semble t'avoir énervé. Mon "ha! ha!" était un rire d'autosatisfaction sur le jeux de mot "tête de pipe" (foireux, il est vrai). Ce n'était pas un rire de moquerie, loin de là. J'essaye toujours de rester courtois.

La question du posteur était de trouver des noms fichiers répondant à certains critères.

Je dis simplement qu'utiliser grep comme premier flux dans une recherche depuis la racine force le système à ouvrir tous les fichiers pour trouver un match du motif dans le contenu des fichiers.

Citation:
GREP(1) Manuel de l'utilisateur Linux
(...)
DESCRIPTION
Grep recherche dans les FICHIERs indiqués (ou depuis l'entrée standard si aucun fichier n'est fourni, ou si le
nom - est mentionné) les lignes correspondant à un certain MOTIF. Par défaut, grep affiche les lignes qui
correspondent au motif.
Il est beaucoup plus efficace de d'abord générer un flux sur des noms de fichiers, avec find, ls ou locate et ensuite de le piper dans un grep.

Ou alors je n'ai rien compris à la question de départ.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 08h54   #17
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
Mais non je ne m'enerve pas , seulement :

Citation:
Envoyé par c-ve
Par contre avec grep ca ne donne rien, j'aimerai par exemple chercher sur la totalité de mon disque tous les fichier contenant le text org, mais ca ne marche pas
.......

Merci, mais en fait ca me donne la liste des fichiers dans le nom contient org, ce qu'il me fait c'est que org soit contenu dans le fichier et non dans son nom
en faite le poseur avait 2 questions distinctes ....

Voila le pourquoi de ma reponse ......

Ensuite le debats sur le pipe avant apres avec ou sans et un peu prematuré me semble t-il, le questionneur ne paraissant pas experimenté du tout. Qu'il se familiarise deja avec des syntaxes simples et bien comprisent avant de se lancer dans des syntaxes plus "complexes"

le grep, comme tout autre commande , accepte tres bien des "filtres" sur les noms de fichiers, du genre :
grep -r "org" [0-9]toto[A-Z].txt

par exemple .
__________________
Marc
Slackware for ever ......
BASH - KSH ( http://marcg.developpez.com/ksh/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/06/2006, 12h57   #18
Membre émérite
 
Inscription : mai 2004
Messages : 708
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : mai 2004
Messages : 708
Points : 853
Points : 853
Citation:
Merci, mais en fait ca me donne la liste des fichiers dans le nom contient org, ce qu'il me fait c'est que org soit contenu dans le fichier et non dans son nom
Citation:
Envoyé par MarcG
en faite le poseur avait 2 questions distinctes ....
Ooops. N'avais pas vu celle-là. Je retire donc ma remarque inappropriée

Désolé MarcG.
__________________
:q :q! :wq :w :w! :wq! :quit :quit! :help help helpquit quit quithelp
:quitplease :quitnow :leave :shit ^X^C ^C ^D ^Z ^Q QUITDAMMIT
Jabber: ripat at im.apinc.org
ripat est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h40.


 
 
 
 
Partenaires

Hébergement Web