Portál AbcLinuxu, 8. května 2024 19:21


Dotaz: Jak nakopírovat jedné zdrojovou složky do více cílových?

13.3.2010 13:15 Tomas
Jak nakopírovat jedné zdrojovou složky do více cílových?
Přečteno: 211×
Odpovědět | Admin
Zdravím, řeším problém, se kterým si zatím nevím rady: mám složku, která obsahuje další podsložky a soubory a potřebuji jí nakopírovat do více cílových složek, konkrétně všem uživatelům v /home/uzivatelXXXX/Desktop, kde UzivatelXXXX je libovolný uživatel. Jde tu operaci udělat nějak automatizovaně, pomocí skriptu apod.? Děkuji za nakopnutí správným směrem. Tomáš

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

13.3.2010 13:21 Filip Jirsák | skóre: 68 | blog: Fa & Bi
Rozbalit Rozbalit vše Re: Jak nakopírovat jedné zdrojovou složky do více cílových?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pokud ji chcete nakopírovat do všech adresářů v /home, pak třeba takhle nějak:
for d in /home/*
do
  cp /tmp/Desktop/ $d
done
Podrobnosti o cyklu for si najděte v manuálové stránce k vašemu shellu.
14.3.2010 10:41 Tomas
Rozbalit Rozbalit vše Re: Jak nakopírovat jedné zdrojovou složky do více cílových?
Děkuji za pomoc, to je přesně, co jsem potřeboval a zároveň mi to pomohlo v dalším poznávání. Při provádění scriptu jsem se ještě setkal s chybovou hláškou "cp: omitting directory....", tak jsem to vyřešil přidáním parametru -r: cp -r /tmp/Desktop $d

A funguje to.
14.3.2010 23:52 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Jak nakopírovat jedné zdrojovou složky do více cílových?

Podla mojho nazoru by bolo vhodnejsie nieco taketo:

for i in /home/*/Desktop
do
cp -r /tmp/Desktop/* "$i"
done

Vyhol by si sa prepisaniu celeho obsahu povodneho /home/uzivatel/Desktop a taktiez je tam podstatne mensia sanca, ze v nejakom inom adresare v /home bude struktura vyhovujuca zadanej napr. /home/nie_je_uzivatel/Desktop .  A kedze tato struktura sa tam nachadzat nebude alebo bude, ale menej ako pri vsetkych, tak je toto riesenie zatial najspravnejsie.

 

p.s.: Ten moj postup cez xargs toto riesil, len som si to neuvedomil hned pri pisani prispevku a zavadzal som nasledne :D

13.3.2010 16:46 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Jak nakopírovat jedné zdrojovou složky do více cílových?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravim, jedna moznost je ta s for loop, co mne pride prirodzenejsie. Potom je tu ale tiez moznost dalsia:

pato@debian:~/test$ ls *
test.file

test1:

test2:

test3:
pato@debian:~/test$ ls -d /home/pato/test/*/ | xargs -n 1 cp test.file
pato@debian:~/test$
pato@debian:~/test$ ls *
test.file

test1:
test.file

test2:
test.file

test3:
test.file

Takze v tvojom pripade by to bolo nieco taketo:

ls -d /home/*/Desktop | xargs -n 1 cp -r  co_treba_skopirovat

alebo tiez mozes nahradit znak * listom uzivatelov. Pretoze v tomto pripade za zapise potrebny subor do vsetkych zloziek v adresari /home/ a tam by mohli byt aj dalsie adresare ako napr. lost+found a dalsie.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.