| - le pipe sous lunix
Résolu
ilo
-
ilo -
ilo -
Bonjour,
SVP comment je peux utiliser la pipe sous linux, si la deuxième commande nécessite plus qu'un argument, par exemple, je veux utiliser la commande find qui va retourner des fichiers que je veux les utiliser comme premier argument de la commande cp qui nécessite un deuxième argument : la destination, comment donc je peux combiner toutes ces données. merci d'avance
SVP comment je peux utiliser la pipe sous linux, si la deuxième commande nécessite plus qu'un argument, par exemple, je veux utiliser la commande find qui va retourner des fichiers que je veux les utiliser comme premier argument de la commande cp qui nécessite un deuxième argument : la destination, comment donc je peux combiner toutes ces données. merci d'avance
A voir également:
- | - le pipe sous lunix
- New pipe - Guide
- Le terme «pip» n'est pas reconnu comme nom d'applet de commande ✓ - Forum Python
- Lunix ✓ - Forum Linux / Unix
- New pipe avis - Forum YouTube
- Relais brisé (pipe) - Forum Programmation
4 réponses
Salut,
Ou avec xargs
Ou avec xargs
~$ ls txt/*.txt -1 txt/1.txt txt/adresses.txt txt/D.txt txt/fich3.txt txt/fichier.txt txt/liste_de_mots_francais.txt txt/number.txt txt/sed.txt ~$ find /home/lami20j/txt/ -type f -name '*.txt' | xargs -I f cp -v f /mnt/sda7/txt2/ « /home/lami20j/txt/fich3.txt » -> « /mnt/sda7/txt2/fich3.txt » « /home/lami20j/txt/1.txt » -> « /mnt/sda7/txt2/1.txt » « /home/lami20j/txt/liste_de_mots_francais.txt » -> « /mnt/sda7/txt2/liste_de_mots_francais.txt » « /home/lami20j/txt/number.txt » -> « /mnt/sda7/txt2/number.txt » « /home/lami20j/txt/adresses.txt » -> « /mnt/sda7/txt2/adresses.txt » « /home/lami20j/txt/fichier.txt » -> « /mnt/sda7/txt2/fichier.txt » « /home/lami20j/txt/sed.txt » -> « /mnt/sda7/txt2/sed.txt » « /home/lami20j/txt/D.txt » -> « /mnt/sda7/txt2/D.txt » ~$ ls /mnt/sda7/txt2 -1 1.txt adresses.txt D.txt fich3.txt fichier.txt liste_de_mots_francais.txt number.txt sed.txt
D'abord je te remerci.
bon j'ai compris votre méthode, mais ma question est général à propos des commandes à plusieurs arguments ^^
bon j'ai compris votre méthode, mais ma question est général à propos des commandes à plusieurs arguments ^^
Re,
mais ma question est général à propos des commandes à plusieurs arguments ^^
Le nombre d'arguments d'une commande dépends de la manière dont la commande (le programme) a été conçue.
Généralement une commande à la syntaxe suivante
Les options peuvent être coutres o longues.
Les arguments peuvent être : un seul argument ou plusieurs
Pour le général tu as maintenant la réponse.
Je pense que tu as plutôt besoin à propos de ton problème ce qui est plutôt concret ;-)
mais ma question est général à propos des commandes à plusieurs arguments ^^
Le nombre d'arguments d'une commande dépends de la manière dont la commande (le programme) a été conçue.
Généralement une commande à la syntaxe suivante
commande options argumentsEnsuite le caractère facultatif et/ou obligatoire des options et/ou arguments et différent pour chaque commande.
Les options peuvent être coutres o longues.
Les arguments peuvent être : un seul argument ou plusieurs
Pour le général tu as maintenant la réponse.
Je pense que tu as plutôt besoin à propos de ton problème ce qui est plutôt concret ;-)
Re-
Qu'entends-tu exactement par "arguments" ?
Si tu sous-entends par là "fichier d'entrée" et "fichier de sortie", avec les 2 solutions données ci-dessus ils sont représentés par "{}" (pour mon exemple) et par "f" pour l'exemple de lami20j et peuvent être utilisés par bon nombre de commandes.
cp -v {} {}.bak
Le premier "{}" représente le fichier d'entrée et le second "{}.bak" représente le fichier de sortie qui en fait est le même que le fichier d'entrée mais auquel on a rajouté l'extension ".bak".
Qu'entends-tu exactement par "arguments" ?
Si tu sous-entends par là "fichier d'entrée" et "fichier de sortie", avec les 2 solutions données ci-dessus ils sont représentés par "{}" (pour mon exemple) et par "f" pour l'exemple de lami20j et peuvent être utilisés par bon nombre de commandes.
$ ls -1 fich1.txt fich2.txt fich3.txt le_fich.txt mon fich.txt ton fich.txt $ find . -type f -name "*" | xargs -i -t cp -v {} {}.bak cp -v ./le_fich.txt ./le_fich.txt.bak './le_fich.txt' -> './le_fich.txt.bak' cp -v ./ton fich.txt ./ton fich.txt.bak './ton fich.txt' -> './ton fich.txt.bak' cp -v ./fich3.txt ./fich3.txt.bak './fich3.txt' -> './fich3.txt.bak' cp -v ./fich2.txt ./fich2.txt.bak './fich2.txt' -> './fich2.txt.bak' cp -v ./fich1.txt ./fich1.txt.bak './fich1.txt' -> './fich1.txt.bak' cp -v ./mon fich.txt ./mon fich.txt.bak './mon fich.txt' -> './mon fich.txt.bak' $ ls -1 fich1.txt fich1.txt.bak fich2.txt fich2.txt.bak fich3.txt fich3.txt.bak le_fich.txt le_fich.txt.bak mon fich.txt mon fich.txt.bak ton fich.txt ton fich.txt.bak $
cp -v {} {}.bak
Le premier "{}" représente le fichier d'entrée et le second "{}.bak" représente le fichier de sortie qui en fait est le même que le fichier d'entrée mais auquel on a rajouté l'extension ".bak".