tootafait, c le pas juste aprés ! (interactif et toot et toot ! :D)
pipomolo
ok mais xargs permet justement de construire une ligne de commande a partir des donnees de l'entree standard et de la commande passee en parametre.
Dans le cas du rm c'est sur que ca ne s'impose pas et la solution que tu proposes est en effet la plus adaptee je pense, mais il y a d'autres cas, dans des scripts notamment, ou xargs se revele vraiment tres utile
minusplus
ben
rm < liste
ou
cat liste | rm
envoie une liste de noms de fichiers sur le stdin de rm, pas dans sa liste de paramètres. or, rm, l'entrée standard, il s'en fout...
pour poser le résultat d'une commande sur la ligne de commande d'une autre commande (chui xlair là ? :D) je veux dire : pour passer le résultat d'une commande en paramètre d'une autre il faut utiliser les back-ticks ou $ :
rm `find ./`
ou
rm $("find ./" )
Jak
minusplus a écrit a écrit :
c rigolo, y'a plein de gens qui confondent entrée standard avec ligne de commande ! :/
Tu expliques ?
minusplus
c rigolo, y'a plein de gens qui confondent entrée standard avec ligne de commande ! :/
pipomolo
je dirais meme plus : indispensable :D
cassidy
yep tres util
Jak
Ah, oui, c'est bien, ça, xargs. Je le note dans un coin, ça peut toujours servir.
pipomolo
sinon a partir de ta liste de fichiers tu peux aussi faire:
cat liste_fichiers | xargs rm
++
Jak
cassidy a écrit a écrit :
ca dois pas se terminer par \; normalement ?
Ça a le même effet, c'est au choix, il s'agit d'un caractère à ne pas interpréter par la commande mais par le "-exec"
cassidy
ca dois pas se terminer par \; normalement ?
Jak
J'avais cherché ça il y a longtemps (ça devait être pour le même genre de truc), et j'en avais pas mal sué pour comprendre la syntaxe exacte du machin, car le man ne donne pas d'exemple, donc je trouvais pas comment faire.
La réponse était perdue dans les abysses de 'info find' :)
olicel
ouia le truc de myocastor, j'avais deja essayé.
merci pour le find -exec, ca ouvre de nouveau horizon ca
ca rend les chose bocoup plus simple
connaissais po :)
Jak
Ah, tiens, si tu veux les mettre dans /tmp avant de les effacer (histoire d'éviter une connerie :) )
find ./ -name "<tes fichiers>" -exec 'cp' {} /tmp ';'
Myocastor : ouais, ça me plaît bien, mais ça marche pas...
~$ cat listefichiers | rm
rm: Trop peu de paramètres.
myocastor
pourquoi pas un
cat listefichier | rm
Jak
olicel a écrit a écrit :
j'ai fait un find et ai obtenue un fihier "listeasupprimer"
maintenant je voudrais supprimer tous les fichiers de cette liste, comment puis-je faire ?
J'ai essayé divers truc et le man rm, mais je trouve pas !!
A utiliser avec précaution : dans le find, au lieu de le terminer par un -print, tu écris ça :
~$ find ./ -name "tes fichiers" -exec 'rm' {} ';' Le début, avant le -exec, c'est ce que tu as mis pour trouver ta liste de fichiers. 'rm' c'est la commande à appliquer quand un fichier est trouvé, {} est la référence au fichier qui vient d'être trouvé, le point-virgule termine l'expression. 'faut faire attention de bien mettre les quotes où il faut (autour de rm et du point-virgule, et pas autour des accolades.
'fallait faire man find :)
olicel
be oui mais ca marche pas ca me dit ca
Syntaxe: rm [-firRe] [--] Fichier...
Tetedeiench
ben...
rm < nomdufichieraveclaliste
théoriquement, ca doit amrcher.
olicel
j'ai fait un find et ai obtenue un fihier "listeasupprimer"
maintenant je voudrais supprimer tous les fichiers de cette liste, comment puis-je faire ?
J'ai essayé divers truc et le man rm, mais je trouve pas !!