Fórum Root.cz

Hlavní témata => Software => Téma založeno: Elep331 19. 11. 2020, 21:51:35

Název: Zřetězení příkazů find a cp s pajpou
Přispěvatel: Elep331 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
Název: Re:Zřetězení příkazů find a cp s pajpou
Přispěvatel: ZAJDAN 19. 11. 2020, 22:16:09
find <Path> <Conditions> | xargs cp -t <copy file path>
Název: Re:Zřetězení příkazů find a cp s pajpou
Přispěvatel: AM 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
Název: Re:Zřetězení příkazů find a cp s pajpou
Přispěvatel: mhi 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

Název: Re:Zřetězení příkazů find a cp s pajpou
Přispěvatel: pangolin 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