rm -R *.tmp ne marche pas ?!?

Un bon endroit pour poser ses questions sur Linux, BSD, Smoothwall, ...

Modérateurs : watch, Barbapapa

Message par ovh » 18 Fév 2005 17:47

philfr mes respects :D
Je ne connaissais pas du tout cette commande xargs et maintenant la preuve scientifique est faite qu'il s'agit d'une excellente invention :lol:
Avatar de l’utilisateur
ovh
Dix mille
Dix mille
 
Message(s) : 10869
Inscription : 21 Oct 2003 10:48
Localisation : Bruxelles -> Paris

Message par philfr » 18 Fév 2005 18:00

Moi je l'utilise aussi pour combler le manque du grep récursif.

Code : Tout sélectionner
find . -name \*.[ch] | xargs grep qqchose


cherche le string "qqchose" dans tous les fichiers *.c et *.h des sous-répertoires.
Avatar de l’utilisateur
philfr
Acharné
Acharné
 
Message(s) : 4545
Inscription : 28 Oct 2004 18:44
Localisation : Au fond à gauche

Message par philfr » 18 Fév 2005 18:02

Anonymous a écrit :Je viens de faire un petit test: creer 1000 fichiers .tmp
avec un long nom sous un repertoire et teste les 2 commandes.
xargs est 7 fois plus rapide. Je lui ferai plus confiance
a present.


Content pour toi et pour nous tous... :wink:
Avatar de l’utilisateur
philfr
Acharné
Acharné
 
Message(s) : 4545
Inscription : 28 Oct 2004 18:44
Localisation : Au fond à gauche

Message par ovh » 18 Fév 2005 18:26

philfr a écrit :Moi je l'utilise aussi pour combler le manque du grep récursif.

Code : Tout sélectionner
find . -name \*.[ch] | xargs grep qqchose


cherche le string "qqchose" dans tous les fichiers *.c et *.h des sous-répertoires.

Pas mal mais sinon
Code : Tout sélectionner
grep "pattern" *.c

recherche déjà dans les fichiers... mais d'un seul type, j'avoue :oops:
Avatar de l’utilisateur
ovh
Dix mille
Dix mille
 
Message(s) : 10869
Inscription : 21 Oct 2003 10:48
Localisation : Bruxelles -> Paris

Message par Invité » 18 Fév 2005 19:24

vous connaissez pas RGREP ( l'équivalent de grep -r ) ?
Invité
 

Message par max » 18 Fév 2005 19:51

Un exemple par la pratique:

Code : Tout sélectionner
- coucou.abc (fichier)
- coucou.xyz (fichier)
+ toto.abc (repertoire)
  - bonjour.abc (fichier)
  - bonjour.xyz (fichier)


Tous les fichiers contiennent un ligne "hello world".

J'ajoute le paramètre -l pour ne lister que le nom du fichier

grep -l "hello" *.abc
->
coucou.abc

grep -r -l "hello" *.xyz
->
coucou.xzy

grep -r -l "hello" *.abc
->
coucou.abc
toto.abc/bonjour.abc
toto.abc/bonjour.xyz

Pourquoi ce bonjour .xyz s'ajoute-t-il dans la liste ? Car grep va d'abord chercher une liste qui correspond à '*.abc', donc 'coucou.abc' et 'toto.abc' et si c'est un fichier, cherche son "hello", si c'est un repertoire, il rentre dedans et chercher le "hello" dans tous les fichiers et sous-repetoires qu'il contient.



Donc find + xargs: combo gagnante.

Et philfr est nommé grand gourou du jour pour sa contribution.

:disco:
Avatar de l’utilisateur
max
Barbapapa Team
Barbapapa Team
 
Message(s) : 8788
Inscription : 10 Juin 2001 01:58
Localisation : fr_BE.UTF8@euro

Message par Invité » 18 Fév 2005 21:10

max a écrit :Un exemple par la pratique:


Pourquoi ce bonjour .xyz s'ajoute-t-il dans la liste ?


Très simple, car dans un grep -r tu indiques un ou des répertoires de départ.

Utilise set -x avant de lancer les commandes et tu verras
Invité
 

Message par philfr » 18 Fév 2005 21:43

Max a tout compris: rgrep ne permet pas de filtrer sur le nom du fichier dans les sous-répertoires... find + xargs oui.

Merci pour la nomination de gourou du jour! :fly:

N'oubliez pas en plus que find permet de filtrer sur plein d'autres choses: -mtime pour la date de modif du fichier, -type pour ne filtrer que les fichiers, les répertoires, les softlinks...

Mais, comme toujours, RTFM:

man xargs:
Code : Tout sélectionner
SEE ALSO
       find(1L), locate(1L), locatedb(5L), updatedb(1) Finding Files (on-line in Info, or printed)
       ^^^^^^^^


man find:
Code : Tout sélectionner
SEE ALSO
       locate(1L), locatedb(5L), updatedb(1L), xargs(1L) Finding Files (on-line in Info, or printed)
                                               ^^^^^^^^^
Avatar de l’utilisateur
philfr
Acharné
Acharné
 
Message(s) : 4545
Inscription : 28 Oct 2004 18:44
Localisation : Au fond à gauche

Message par max » 18 Fév 2005 21:45

Anonymous a écrit :Très simple, car dans un grep -r tu indiques un ou des répertoires de départ.


Heu, il faut lire le message jusqu'au bout avant de répondre ce que je raconte :)
Avatar de l’utilisateur
max
Barbapapa Team
Barbapapa Team
 
Message(s) : 8788
Inscription : 10 Juin 2001 01:58
Localisation : fr_BE.UTF8@euro

Message par ovh » 18 Fév 2005 22:11

unix powa :love:

strop puissant :D
Avatar de l’utilisateur
ovh
Dix mille
Dix mille
 
Message(s) : 10869
Inscription : 21 Oct 2003 10:48
Localisation : Bruxelles -> Paris

Précédent

Retour vers Unix

Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit