OVH Cloud OVH Cloud

recherche de fichiers

21 réponses
Avatar
vincent.verdon
Bonjour,

je cherche quels outils sont utilisables pour faire une recherche de
fichiers suivant leur extension sur une machine Linux. En fait il s'agit
d'un serveur Samba sur lequel je souhaite traquer régulièrement les
fichiers exécutables Windoze .exe qui y sont copiés, afin de les détruire.
Actuellement j'ai essayé une commande du genre :
ls -l -R /home | grep .exe > resultat
Puis je peux regarder dans mon fichier resultat.
J'obtiens bien la liste, mais sans le nom des répertoires. cela empèche
de pouvoir les effacer ensuite.

Pour résumer : y-a-t-il un outil pour obtenir la liste des fichiers
ayant un motif particulier (.exe) avec leur chemin ?
En plus, je souhaite avoir trace du propriétaire du fichier afin de lui
demander des comptes...

Merci de me lire, amicalement, Vincent Verdon

10 réponses

1 2 3
Avatar
Philippe WEILL
wrote:
Bonjour,

je cherche quels outils sont utilisables pour faire une recherche de
fichiers suivant leur extension sur une machine Linux. En fait il s'agit
d'un serveur Samba sur lequel je souhaite traquer régulièrement les
fichiers exécutables Windoze .exe qui y sont copiés, afin de les détruire.
Actuellement j'ai essayé une commande du genre :
ls -l -R /home | grep .exe > resultat


find /home -name '*.exe' -ls
find /home -name '*.exe' -exec rm {} ;

Avatar
Philippe WEILL
wrote:
J'ai bien trouvé find...mais je n'arrive pas à m'en servir !



find / -name find

avec autant d'info ;-) c'est difficile de répondre
qu'est ce que tu tappes
que repond le systeme

Avatar
vincent.verdon
J'ai bien trouvé find...mais je n'arrive pas à m'en servir !
Avatar
Stephane Dupille
find /home -name '*.exe' -ls
find /home -name '*.exe' -exec rm {} ;


Un peu mieux, pour éviter de forker un rm à chaque fichier :
find /home -name '*.exe' -print | xargs rm
Par contre, ça suppose que les noms de fichiers ne contiennent pas
d'espace. Dans cas, il vaut mieux disposer des version GNU des outils
find et xargs :
find /home -name '*.exe' -print0 | xargs -0 rm

--
AB>Je trouve consternant ce refus de réponse, et je joins donc mon
AB>indignation à celle de Philippe.
Ça me semble un peu disproportionné comme sanction.
-+- Greg in GNU : Seigneur, protégez neuneu de ses amis -+-

Avatar
Stephane Dupille
Hello !

J'ai bien trouvé find...mais je n'arrive pas à m'en servir !


Faut lire la doc de find. "man find" ne fonctionne pas chez vous ?

En gros, les arguments de find forment une liste de prédicat. Pour
chaque fichier, il vérifie les prédicats et arrête dès qu'il y en a un
qui devient faux.

Par exemple : find <rep> -name '*.exe' -print
Pour chaque fichier, il va regarder le prédicat -name avec son
argument pour voir si ça matche. Si oui, alors il va regarder le
prédicat -print, qui est toujours vrai, mais qui a un effet de bord :
il sort sur la sortie standard le nom et le chemin du fichier.

Il y a bien entendu plein d'autres prédicats, soit de test, soit
d'action. La liste est dans le man.

--
c'est bien vrai : toujours vérifier que l'on aime le goût du sperme du
monsieur avant de l'épouser.
-+- Grrr in GNU : Comment l'esprit vint aux jeunnes filles -+-

Avatar
Stephane Chazelas
On Wed, 30 Nov 2005 12:18:39 +0100, Stephane Dupille wrote:
find /home -name '*.exe' -ls
find /home -name '*.exe' -exec rm {} ;


Un peu mieux, pour éviter de forker un rm à chaque fichier :
find /home -name '*.exe' -print | xargs rm

Par contre, ça suppose que les noms de fichiers ne contiennent pas
d'espace.


Ou de tab, de saut de lignes de single/double quotes ou de
backslashes.

Dans cas, il vaut mieux disposer des version GNU des outils
find et xargs :


GNU ou BSD.

find /home -name '*.exe' -print0 | xargs -0 rm


Pourquoi ne pas simplement utiliser les fonctionalités POSIX:

find /home -name '*.exe' -exec rm {} +

--
Stephane


Avatar
Stephane Dupille
Dans cas, il vaut mieux disposer des version GNU des outils
find et xargs :
GNU ou BSD.



Ah ?
[gimli] ~> uname -sr
FreeBSD 4.10-STABLE
[gimli] ~> man find | egrep print0 | wc -l
0

Pourquoi ne pas simplement utiliser les fonctionalités POSIX:
find /home -name '*.exe' -exec rm {} +


J'oublie toujours cette possibilité. D'autant plus que cela ne
fonctionne pas sur le find que j'ai sur la machine décrite ci
dessus...

--
je me connecte grâce à Wanadoo et je trouve que la durée de vie des
messages qu'ils ont imposé est trop court. J'y vois presque une forme
de censure basée sur une conservation réduite des traces écrites.
-+- Ed in GNU : Et gravé dans le marbre, ça ne serait pas mieux ? -+-


Avatar
Stephane Chazelas
On Wed, 30 Nov 2005 13:53:54 +0100, Stephane Dupille wrote:
Dans cas, il vaut mieux disposer des version GNU des outils
find et xargs :
GNU ou BSD.



Ah ?
[gimli] ~> uname -sr
FreeBSD 4.10-STABLE
[gimli] ~> man find | egrep print0 | wc -l
0


grepper une page de man ne fonctionne pas forcement (pour les
parties soulignees ou en gras).

Je ne sais pas pour 4.10-STABLE, mais 4.10-RELEASE et 4.9 l'ont:

http://www.freebsd.org/cgi/man.cgi?query=find&apropos=0&sektion=0&manpath=FreeBSD%204.10-RELEASE&format=html

Pourquoi ne pas simplement utiliser les fonctionalités POSIX:
find /home -name '*.exe' -exec rm {} +


J'oublie toujours cette possibilité. D'autant plus que cela ne
fonctionne pas sur le find que j'ai sur la machine décrite ci
dessus...



--
Stephane



Avatar
Stephane Dupille
Ah ?
[gimli] ~> uname -sr
FreeBSD 4.10-STABLE
[gimli] ~> man find | egrep print0 | wc -l
0
grepper une page de man ne fonctionne pas forcement (pour les

parties soulignees ou en gras).


Oui.

Je ne sais pas pour 4.10-STABLE, mais 4.10-RELEASE et 4.9 l'ont:


Effectivement, je me suis planté et fourvoyé dans mon grep. Le find
de 4.10-STABLE a bien le -print0, et l'option -X que je ne connaissais
pas. OK, j'aurais appris un truc aujourd'hui.

Par contre le '+' à la place du ';' dans -exec ne fonctionne pas.

--
CQ> Pourquoi chercher des ténors derrière les barreaux,
CQ> ils ont été libérés, non ? Mais que fait la DDT ?
Le DDT, c'est pour éradiquer les moustiques, pas les ténors.
-+- ED in : Guide du Neuneu Usenet - J'en perds le ténor -+-


Avatar
David LE BOURGEOIS
find /home -name '*.exe' -print0 | xargs -0 rm


J'ajouterai l'option -type f au find, au cas où.
Et l'option -r pour xargs permet de ne pas lancer un rm sans argument,
si aucun fichier n'est trouvé.

find /home -type f -name "*.exe" -print0 | xargs -r0 rm

Par contre, je me demande s'il est nécessaire de mettre -- après le rm.
Qu'en pensez-vous ?

--
David LE BOURGEOIS
e-mail : david.lebourgeois (at) free.fr
jabber : david.lebourgeois (at) jabber.fr

1 2 3