Téléchargement
illégal
Posez votre question Signaler

| - le pipe sous lunix [Résolu]

ilo - Dernière réponse le 10 janv. 2011 à 22:28
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
Lire la suite 

| - le pipe sous lunix »

Suggestions
8 réponses
Réponse
+0
moins plus
Salut,

find /chemin -type f -name "*.txt" -exec cp -v {} /destination/ \;

Ajouter un commentaire
Réponse
+0
moins plus
Salut,

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

Ajouter un commentaire
Réponse
+0
moins plus
D'abord je te remerci.
bon j'ai compris votre méthode, mais ma question est général à propos des commandes à plusieurs arguments ^^
zipe31- 9 janv. 2011 à 13:55
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.

$ 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".
just1602- 9 janv. 2011 à 16:45
Donc si je comprend bien ton exemple, on pourrait faire ceci pour un backup par exemple, on pourrait faire :
$ find . -type f -name "*" | xargs -i -t cp -v {} /mnt/backup/{}.bak


@++ :- )
zipe31- 9 janv. 2011 à 16:53
Exactement, voir aussi directement sans passer par "xargs" :

find . -type f -name "*" -exec cp -v {} /mnt/backup/{}.bak \;
Ajouter un commentaire
Réponse
+0
moins plus
D'accord je vous remercie ^^
Ajouter un commentaire
Ce document intitulé « | - le pipe sous lunix » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?