[pipe] Réutiliser le résultat d'une commande
Résolu
A voir également:
- [pipe] Réutiliser le résultat d'une commande
- Invite de commande - Guide
- Commande terminal mac - Guide
- Resultat foot - Télécharger - Vie quotidienne
- Commande dism - Guide
- Lexer resultat - Télécharger - Sport
4 réponses
Salut,
La commande est
La seconde commande est compliquée, rien qu'à lire.
Et la première est inutile. Parce que tu vas chercher un fichier. Soit il est présent, tu l'envoies en lecture par
En revanche, si tu fais directement :
La commande est
findet non
fileje crois.
La seconde commande est compliquée, rien qu'à lire.
Et la première est inutile. Parce que tu vas chercher un fichier. Soit il est présent, tu l'envoies en lecture par
cat. Soit il est absent et tu devrais avoir une erreur de retour de
cat(je n'ai pas testé).
En revanche, si tu fais directement :
cat fileça t'évite d'écrire la commande de recherche.
Salut, oui effectivement il y a une faute de frappe, c'est bien
Je cherchais une manière de simplifier tout ça justement, pour éviter d'avoir à le faire en 2 fois comme ceci:
puis
car en une fois c'est plus simple, afin de pouvoir aller plus vite et d'automatiser certaines tâches. Mais le fait de tout grouper en 1 fois, je ne sais pas si c'est quelque chose qui se fait habituellement ?
findque je voulais utiliser. Merci à toi.
Je cherchais une manière de simplifier tout ça justement, pour éviter d'avoir à le faire en 2 fois comme ceci:
file . -name file
puis
cat file
car en une fois c'est plus simple, afin de pouvoir aller plus vite et d'automatiser certaines tâches. Mais le fait de tout grouper en 1 fois, je ne sais pas si c'est quelque chose qui se fait habituellement ?
Bonjour,
Imaginons que le dossier
Dans ce cas :
Cependant attention ! Des précautions doivent être prises si les arguments, ici tes noms de fichiers, contiennent des espaces. Pour plus de détails voir cette discussion.
Bonne chance
Imaginons que le dossier
~/totocontienne trois fichiers nimmés
fichier1.txt,
fichier2.txtet
fichier3.txt, contenant respectivement le texte
coucou1,
coucou2et
coucou3:
(mando@silk) (~/toto) $ find . -type f
./fichier3.txt
./fichier1.txt
./fichier2.txt
(mando@silk) (~/toto) $ head fichier*txt
==> fichier1.txt <==
coucou1
==> fichier2.txt <==
coucou2
==> fichier3.txt <==
coucou3
Dans ce cas :
- Si tu veux passer simultanément en paramètre à une commande (disons
cat
), i.e. exécuter la commandecat fichier1.txt fichier2.txt fichier3.txt
, tu peux utiliserxargs
qui remet sur une ligne d'arguments les lignes générées sur la sortie standard par la commandes précédant le|
:
(mando@silk) (~/toto) $ find . -type f | xargs cat
coucou3
coucou1
coucou2
- Si tu veux itérativement appliquer une commande à chacun de ces fichiers (disons
echo
), tu peux injecter le résultat de ta commande dans une bouclefor
:
(mando@silk) (~/toto) $ for x in $(find -type f); do echo $x; done
./fichier3.txt
./fichier1.txt
./fichier2.txt
Cependant attention ! Des précautions doivent être prises si les arguments, ici tes noms de fichiers, contiennent des espaces. Pour plus de détails voir cette discussion.
Bonne chance