Zřetězení příkazů find a cp s pajpou

Zřetězení příkazů find a cp s pajpou
« kdy: 19. 11. 2020, 21:51:35 »
Ahoj, lze nějak zřetězit příkazy find a copy? Tedy to co najde find zkopíruj někam?

find / -user petr -exec cp {} /root/petr \; = zkopíruj všechny soubory uživatele petr do adresáře /root/petr

Existuje ovšem i nějaká varianta s pajpou? Něco jako find | cp ?

Díky


ZAJDAN

  • *****
  • 1 977
    • Zobrazit profil
    • E-mail
Re:Zřetězení příkazů find a cp s pajpou
« Odpověď #1 kdy: 19. 11. 2020, 22:16:09 »
find <Path> <Conditions> | xargs cp -t <copy file path>
Vesele, vesele do továrny dělník běží...vesele, vesele do továrny jde. Vesele se usmívá když mu soustruh zazpívá...vesele, vesele do továrny jde. Vesele si poskočí když se soustruh roztočí ...vesele, vesele do továrny jde.

AM

Re:Zřetězení příkazů find a cp s pajpou
« Odpověď #2 kdy: 19. 11. 2020, 22:31:32 »
find <Path> <Conditions> | xargs cp -t <copy file path>
Na klasických Unixech cp volbu -t nemá. Místo toho se používalo cpio: find src | cpio -pmud dest

mhi

  • ***
  • 221
    • Zobrazit profil
Re:Zřetězení příkazů find a cp s pajpou
« Odpověď #3 kdy: 19. 11. 2020, 23:30:28 »
Ja mam celkem problem s diakritikou a mezerami a zde nastinena reseni mi nechodila, pouzivam (mozna zbytecne, mozna spatne) toto reseni:

#!/bin/bash
find ... | while read fn ; do cp "$fn" ...  ; done


Re:Zřetězení příkazů find a cp s pajpou
« Odpověď #4 kdy: 20. 11. 2020, 09:12:22 »
Ja mam celkem problem s diakritikou a mezerami a zde nastinena reseni mi nechodila, ...

Pro diakritiku, mezery a pod. existuje pro find přepínač -print0, který jednotlivé položky na výpisu odděluje pomocí null znaku. Příkaz xargs pak umí takový vstup zpracovat pomocí přepínače -0

Tj kopírování souborů by vypadalo jako

Kód: [Vybrat]
find /path -type f -user petr -print0 | xargs -0 -I % cp % /root/petr