abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:44 | IT novinky

    Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.

    Ladislav Hagara | Komentářů: 1
    dnes 01:11 | Nová verze

    Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.

    Ladislav Hagara | Komentářů: 3
    včera 16:22 | Nová verze

    Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | Nová verze

    Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).

    Ladislav Hagara | Komentářů: 5
    včera 15:11 | Nová verze

    Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Humor

    Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.

    Ladislav Hagara | Komentářů: 5
    včera 11:33 | Zajímavý článek Ladislav Hagara | Komentářů: 0
    16.9. 21:44 | Nová verze

    Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    16.9. 17:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.

    Ladislav Hagara | Komentářů: 0
    16.9. 12:22 | Nová verze

    Multiplatformní emulátor terminálu Ghostty byl vydán ve verzi 1.2 (𝕏, Mastodon). Přehled novinek, vylepšení a nových efektů v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (50%)
     (59%)
     (0%)
     (5%)
     (14%)
     (5%)
     (14%)
     (5%)
     (9%)
    Celkem 22 hlasů
     Komentářů: 2, poslední dnes 09:57
    Rozcestník

    Dotaz: Zkopírování vybraných adresářů, včetně nadřazeného adresáře

    Beetljuice avatar 7.6.2010 10:13 Beetljuice | skóre: 26 | blog: BeetljuiceBlog | Bílina
    Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Přečteno: 309×
    Zdravim.Nadpis je asi trochu krkolomný.Jde mi o toto :
    Mám velký adresář s daty zákazníků a některé adresáře obsahují podadresář dokumentace.Potřebuji najít které adresáře obsahují ten podadr. "dokumentace" a zkopírovat včetně obsahu do cílového umístění.
    Zkoušel jsem to pomocí find a exec cp, ale nevím jak tam dostat ten nadřazený adresář.
    Příklad :
    výsledek hledání :
    data/a/dokumentace
    data/b/dokumentace
    data/e/dokumentace
    data/k/dokumentace
    zkopírovat do cíle:
    cíl/a/dokumentace
    cíl/b/dokumentace
    cíl/e/dokumentace
    cíl/k/dokumentace
    Možná jsem hledal špatně, ale na podobný požadavek jsem dotaz nikde nezahlédl.Díky.
    Aj dont spík ÍÍngliš :-(

    Řešení dotazu:


    Odpovědi

    7.6.2010 11:06 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Treba takhle? Urcite to jde i lepe. Tohle je jen rychly hack. Rozhodne to neni hezke ani optimalni :-)

    cd data
    for dir in * ;
    do
    if [ -d $dir ] && [ -d ${dir}/dokumentace ]
      then
        # vlastni kopirovani dat
        mkdir -p ../cil/${dir}/dokumentace
        cp ${dir}/* ../cil/${dir}
        cp ${dir}/dokumentace/* ../cil/${dir}/dokumentace
    fi
    done
    
    7.6.2010 13:15 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    cp ${dir}/dokumentace/* ../cil/${dir}/dokumentace
    Jestli jsou pod tim adresarem 'dokumentace' jeste dalsi podadresare, tak lze pochopitelne pouzit:
    cp -r ${dir}/dokumentace ../cil/${dir}/dokumentace
    
    7.6.2010 13:20 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    cp -r ${dir}/dokumentace ../cil/${dir}/dokumentace
    Omlouvam se, ma byt cp -r ${dir}/dokumentace ../cil/${dir}
    7.6.2010 11:33 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Přes find a scriptik co to zavolá by to určitě šlo lehce.
    Ale pomocí tohoto postupu to jde taky:
    cd /cesta/k/data
    find . -maxdepth 2 -type d -regex ".*/dokumentace$" -exec  mkdir -p "/cesta/k/cil/{}" \;
    find . -maxdepth 2 -type d -regex ".*/dokumentace$" -exec  cp -r "{}" "/cesta/k/cil/{}" \;
    
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    7.6.2010 12:08 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    No nevim, ale s timhle resenim bych mel hned nekolik problemu:
    1. proleza cely adresar 2x
    2. najde i adresar data/dokumentace (coz se nechce)
    3. nekopiruje soubory v adresari data/X
    4. adresar data/X/dokumentace kopiruje do cil/X/dokumentace/dokumentace
    7.6.2010 13:46 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    OK, sorry - nezkusil jsem si to :)

    ad. 1 - to by snad až tak nevadilo, pokud to není několik set tisíc položek :)
    ad. 2, ad. 3, ad. 4 - oprava:
    cd /cesta/k/data
    find . -maxdepth 2 -type d -regex "\.\/.*/dokumentace$" -exec  mkdir -p "/home/imega/cil/{}" \;
    find . -maxdepth 2 -type d -regex "\.\/.*/dokumentace$" -exec  cp -r "{}/../" "/home/imega/cil/{}/../" \;
    
    Osobně bych to realizoval přes find, který by přes -exec volal skript, kde by se akce realizovaly.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    7.6.2010 13:51 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    /home/imega má být /cesta/k – aspoň je vidět, že jsem si to i zkusil :)
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    7.6.2010 14:13 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Si mas vytvorit testovaci adresar a pod nim nejakou adresarovou strukturu pro pokusy :-)

    Ja to delam takhle:
    mkdir testovaci_adresar/data
    cd testovaci_adresar/data
    mkdir -p a/dok; touch a/soub1 a/dok/soub2
    touch b
    mkdir  c; touch c/soub3
    mkdir -p d/dok ; touch d/soub4 d/dok/soub5
    touch e
    
    Tim jsem si vytvoril smes souboru a adresaru ruznych urovni a na nich si pak delam pokusy ;-)
    7.6.2010 15:19 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    A pointa? - však jsem si to udělal…
    PS: já mám testovací mašinu…
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    7.6.2010 15:34 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    A pointa?
    Nebudes davat do verejnych diskuzi jedno platne prihlasovaci jmeno na tvuj system. To je takova zakladni ochrana proti crackerum, kteri se chteji probourat na tvuj system.
    7.6.2010 18:40 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    „Security by obscurity“ je „základní ochrana“ - to asi ne, že ? :)
    I když jsem z hlediska bezpečnosti paranoidní, tak znalost běžného uživatele neveřejného testovacího serveru mě opravdu netrápí.
    Kolik je asi tak kulturních variant běžných uživatelských účtů pokud znáte jméno a příjmení (což u mě není problém zjistit) :)
    <joke>Ale začnu uvažovat o přejmenování root-a </joke>
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Fuky avatar 7.6.2010 12:54 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    $ find . -type d -name 'dokumentace' -printf '%h\n' |xargs -i cp -a {} cil
    
    7.6.2010 13:11 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    1. najde i jine adresare 'dokumentace' nez pouze v druhe urovni
    2. kopiruje data/X/ do cil/ (tedy ne do cil/X)
    3. kopiruje i jine podadresare nez jenon "dokumentace" (coz tazatel zrejme chtel)
    Beetljuice avatar 7.6.2010 13:26 Beetljuice | skóre: 26 | blog: BeetljuiceBlog | Bílina
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    JJ zdroj a cíl si upravím, ale bohužel to kopíruje i jiné adresáře než jen tu dokumentaci. A já chci jen tu dokumentaci ;-)
    Aj dont spík ÍÍngliš :-(
    7.6.2010 13:31 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Ten muj skript z prvniho prispevku funguje. Zkousel jsem to tady u sebe.

    Tohle reseni s findem by bylo efektivnejsi, problem ale je, ze 'cp' nejde dost dobre vysvetlit, aby kopirovalo jen adresar a ostatnich si nevsimalo, takze stejne by to clovek musel udelat tak, jak to mam v tom prvnim skriptu - nejdrive zkopirovat adresar a pak jenom ten podadresar.

    Pokud nekdo neprijde na to, jak jednoduse udelat neco jako: cp /data/a{./dokumentace} cil/a, tak se nehneme z mista.
    7.6.2010 13:36 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    cp /data/a{./dokumentace} cil/a
    Sakra, zase preklep :-( Ma byt carka misto tecky ve slozenych zavorkach.

    cp /data/a{,/dokumentace} cil/a
    
    Beetljuice avatar 7.6.2010 14:11 Beetljuice | skóre: 26 | blog: BeetljuiceBlog | Bílina
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    JJ ten tvůj skript vypadá myslím dobře. Funguje ;-) Ještě doplním pár věcí, ale ty nejsou předmětem dotazu. Moc dík za pomoc. :-)
    A ano zapomněl jsem, že i v adresáři "dokumentace" jsou podadresáře nutně ke kopírování, ale to řeší přepínač "-r"
    Aj dont spík ÍÍngliš :-(
    7.6.2010 14:23 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Reseni s "cp -r" tam mam taky :-) Jen jeste v takovem pripade muzes nahradit to mkdir -p ../cil/${dir}/dokumentace jenom mkdir ../cil/$dir
    Moc dík za pomoc
    Neni zac.
    7.6.2010 13:34 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    3. kopiruje i jine podadresare nez jenon "dokumentace" (coz tazatel zrejme chtel)
    Ma byt samozrejme "NEchtel".
    Fuky avatar 7.6.2010 17:37 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře

    Zadání není jednoznačné, takže se lze jen domnívat co tazatel přesně chtěl. ;-)

    kopiruje data/X/ do cil/ (tedy ne do cil/X)

    Kopíruje data/X do cil, tj. v adresáři cíl bude podadresář X čili kopíruje data/X/ do cil/X, vyzkoušej si co dělá:

    $ cp -a data/X cil
    

    kopiruje i jine podadresare nez jenon "dokumentace"

    Tak kopírujte jen podadresář dokumentace:

    $ find . -type d -name 'dokumentace' |xargs -i rsync -aR {} cil
    

    najde i jine adresare 'dokumentace' nez pouze v druhe urovni

    Tak si specifikujte v jaké úrovni budete adresář dokumentace zpracovávat:

    $ find . -mindepth 3 -maxdepth 3 -type d -name 'dokumentace' |xargs -i rsync -aR {} cil
    

    Ještě nějaká nejasnost?

    Beetljuice avatar 8.6.2010 09:33 Beetljuice | skóre: 26 | blog: BeetljuiceBlog | Bílina
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Ačkoliv je to psáno trochu kostrbatě, myslím si, že podstata požadavku je napsána již ve vzoru dotazu.
    Najít data "dokumentace" a zkopírovat do cíle, ale :
    - adresář dokumentace má nadřazený adresář (zákazník), který se musí také vytvořit v cíli, aby bylo jasné ke komu to vlastně patří.
    - pokud adresář dokumentace obsahuje i další podadresáře, tak ty také zkopírovat (to jsem v původním dotazu zapomněl zmínit) ;-)
    Aj dont spík ÍÍngliš :-(
    8.6.2010 10:57 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Kopíruje data/X do cil, tj. v adresáři cíl bude podadresář X čili kopíruje data/X/ do cil/X, vyzkoušej si co dělá:
    Ano, popletl jsem to.

    Pomotal jsem
    cp -r data/x cil
    a
    cp -r data/x/* cil
    7.6.2010 13:41 marek
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Dobry den.

    Pochopil jsem to dobre?

    ~/zkouska$ find
    .
    ./bleble
    ./bleble/dokumentace
    ./bleble/dokumentace/zkouska
    ./blabla
    ./bloblo
    ./bloblo/bubu
    ./bloblo/dokumentace
    ./bloblo/dokumentace/zkouska
    ~/zkouska$ cp --parents */dokumentace/* ../zkouska1/
    ~/zkouska$ find ../zkouska1/
    ../zkouska1/
    ../zkouska1/bleble
    ../zkouska1/bleble/dokumentace
    ../zkouska1/bleble/dokumentace/zkouska
    ../zkouska1/bloblo
    ../zkouska1/bloblo/dokumentace
    ../zkouska1/bloblo/dokumentace/zkouska
    
    Marek
    7.6.2010 14:03 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Ten prepinac "--parents" je prinos do zdejsi diskuze.

    Problem s tim tvym skriptem je, ze nekopiruji soubory v adresari v prvni urovni, tzn. ze soubory z napr. ./zkouska/bleble se nezkopiruji do ../zkouska1/bleble. To je ta velka zaludnost tohoto dotazu - zkopirovat obsah (tj.soubory) adresare a JEDNOHO jeho podadresare.

    Taky se asi nebude kopirovat stromova struktura v adresari 'dokumentace', ale to se puvodni tazatel nevyjadril, jestli se tam nejaka ocekava.
    7.6.2010 14:34 marek
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Dobry den

    " ./zkouska/bleble se nezkopiruji do ../zkouska1/bleble."

    A ma se kopirovat, nebo ne?

    Toto

    cp -r --parents */dokumentace/* ../zkouska1/
    

    podle mne dela:

    Pokud existuje adresar dokumentace ve druhe urovni, tak ho zkopiruji i s nadrizenym adresarem rekurzivne do ./zkouska1/

    Marek
    7.6.2010 15:14 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    A ma se kopirovat, nebo ne?
    Myslim, ze tazatel se vyjadril, ze ma.

    Zkousel jsi, co ten tvuj 'cp' kopiruje? Protoze ja to zkousel a nekopiruje tu prvni uroven.

    Vytvor si soubor v zkouska/bleble (napr. takhle: touch ./zkouska/bleble/abc), spust na to ten tvuj cp a podivej se, co mas v zkouska1/bleble. Soubor 'abc' to rozhodne nebude :-)

    To stejne plati pro soubory (i adresare) v ./zkouska/bleble/dokumentace/zkouska

    DIR="./zkouska/bleble/dokumentace/zkouska"
    touch ${DIR}/def
    mkdir ${DIR}/podadr
    touch ${DIR}/podadr/ghi
    
    ^^ Ani jeden z nich se nezkopiruje.
    7.6.2010 15:25 marek
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře

    Co tedy delam spatne, ze si myslym, ze mne to funguje?

    ~/zkouska$ DIR="./bleble/dokumentace/zkouska"
    ~/zkouska$ mkdir ./bleble/dokumentace/zkouska
    ~/zkouska$ touch ${DIR}/def
    ~/zkouska$ mkdir ${DIR}/podadr
    ~/zkouska$ touch ${DIR}/podadr/ghi
    ~/zkouska$ find
    .
    ./bleble
    ./bleble/dokumentace
    ./bleble/dokumentace/zkouska
    ./bleble/dokumentace/zkouska/podadr
    ./bleble/dokumentace/zkouska/podadr/ghi
    ./bleble/dokumentace/zkouska/def
    ./blabla
    ./bloblo
    ./bloblo/bubu
    ./bloblo/dokumentace
    ./bloblo/dokumentace/dir
    ./bloblo/dokumentace/dir/file
    ./bloblo/dokumentace/zkouska
    ~/zkouska$ mkdir ../zkouska1
    ~/zkouska$ cp -r --parents */dokumentace/* ../zkouska1/
    ~/zkouska$ find ../zkouska1
    ../zkouska1
    ../zkouska1/bleble
    ../zkouska1/bleble/dokumentace
    ../zkouska1/bleble/dokumentace/zkouska
    ../zkouska1/bleble/dokumentace/zkouska/podadr
    ../zkouska1/bleble/dokumentace/zkouska/podadr/ghi
    ../zkouska1/bleble/dokumentace/zkouska/def
    ../zkouska1/bloblo
    ../zkouska1/bloblo/dokumentace
    ../zkouska1/bloblo/dokumentace/dir
    ../zkouska1/bloblo/dokumentace/dir/file
    ../zkouska1/bloblo/dokumentace/zkouska
    
    Marek
    7.6.2010 15:42 Ant
    Rozbalit Rozbalit vše Re: Zkopírování vybraných adresářů, včetně nadřazeného adresáře
    Co tedy delam spatne, ze si myslim, ze mne to funguje?
    Zapomnel jsi si vytvorit ten soubor v ./bleble jak jsem psal (touch ./bleble/abc)

    Jinak se omlouvam, ze jsem nepostrehl to pridani prepinace "-r" do "cp". Tim se resi to kopirovani adresarove struktury pod 'dokumentace'.

    Založit nové vláknoNahoru

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

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.