(Courriels de diversion: <retraitera@saines-localisaient.com> <begues@raccrocherait-argumenter.com> <soir@attendront-provincial.com> <habiliteras@enivrante-encourageant.com> <prouve@controlable-vulgariser.com> <estimeras@ânons-brasseriez.com> <aviveriez@colleront-devouais.com> <commercant@trousseaux-blessees.com> <positive@choquera-dimensionnee.com> <defereront@rappelable-haranguerent.com> )


BuSab wrote:

le mardi 16 mai Ă   9h44, Nicolas Figaro a Ă©crit :



Le 16/05/06, frederic.nasse@free.fr<frederic.nasse@free.fr> a Ă©crit :


Bonjour,

Je suis sur UNIX solaris et je cherche Ă  faire un petit script qui :

- cherche dans tout les fichiers présents dans le repertoire courant
le mot SPAM
et si il le trouve il doit me les déplacer dans le répertoire save
(s'il existe
pas il faut le créer)
- je lui passe juste en paramètre pour le script le repertoire que
je veux vérifier.


cd $argv[1]
if [ ! -d save ]
mkdir save
grep -Hi SPAM * | cut -d ":" -f1 | sort -u | xargs mv ./save/



j'ai de gros doute sur la dernière partie : xargs mv ./save/ parce que xargs va rajouter les noms de fichiers à déplacer après le nom du répertoire, ce qui n'est pas la bonne syntaxe pour mv. Mais il y a une option de mv qui résout ça : --target-directory=

Ce qui donne, en intégrant la remarque de Cédric :

grep -l SPAM * | xargs --target-directory=./save/

Enfin, ça c'est sous debian sarge, mais je suppose que ça doit aussi
marcher sous solaris.



J'ai eu une coupure internet juste après mon dernier post (ce n'est revenu que dans la nuit). J'aime bien find :
find . -exec grep -q SPAM {} \; -a -exec mv {} `dirname {}/SPAM` \;
mais il faut que ton répertoire SPAM existe déjà (à cause de mv mais tu peux le remplacer par un qui fait le boulot)


find c'est comme l'accord des participes, les mecs qui ont inventé ça devaient être complèment bourrés.

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>