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 05:33 | Komunita

    Richard Stallman dnes v Liberci přednáší o svobodném softwaru a svobodě v digitální společnosti. Od 16:30 v aule budovy G na Technické univerzitě v Liberci. V anglickém jazyce s automaticky generovanými českými titulky. Vstup je zdarma i pro širokou veřejnost.

    Ladislav Hagara | Komentářů: 0
    dnes 03:55 | Komunita

    sudo-rs, tj. sudo a su přepsáné do programovacího jazyka Rust, nahradí v Ubuntu 25.10 klasické sudo. V plánu je také přechod od klasických coreutils k uutils coreutils napsaných v Rustu.

    Ladislav Hagara | Komentářů: 1
    včera 22:11 | Nasazení Linuxu

    Fedora se stala oficiální distribucí WSL (Windows Subsystem for Linux).

    Ladislav Hagara | Komentářů: 1
    včera 13:22 | IT novinky

    Společnost IBM představila server IBM LinuxONE Emperor 5 poháněný procesorem IBM Telum II.

    Ladislav Hagara | Komentářů: 2
    včera 04:55 | Nová verze

    Byla vydána verze 4.0 multiplatformního integrovaného vývojového prostředí (IDE) pro rychlý vývoj aplikaci (RAD) ve Free Pascalu Lazarus (Wikipedie). Přehled novinek v poznámkách k vydání. Využíván je Free Pascal Compiler (FPC) 3.2.2.

    Ladislav Hagara | Komentářů: 1
    včera 00:33 | Komunita

    Podpora Windows 10 končí 14. října 2025. Připravovaná kampaň Konec desítek (End of 10) může uživatelům pomoci s přechodem na Linux.

    Ladislav Hagara | Komentářů: 28
    5.5. 23:22 | Pozvánky

    Již tuto středu proběhne 50. Virtuální Bastlírna, tedy dle římského číslování L. Bude L značit velikost, tedy více diskutujících než obvykle, či délku, neboť díky svátku lze diskutovat dlouho do noci? Bude i příští Virtuální Bastlírna virtuální nebo reálná? Nejen to se dozvíte, když dorazíte na diskuzní večer o elektronice, softwaru, ale technice obecně, který si můžete představit jako virtuální posezení u piva spojené s učenou

    … více »
    bkralik | Komentářů: 1
    5.5. 22:33 | IT novinky

    Dle plánu dnes končí služba Skype. Uživatelé mohou pokračovat v Microsoft Teams.

    Ladislav Hagara | Komentářů: 1
    5.5. 21:44 | IT novinky

    Český statistický úřad rozšiřuje Statistický geoportál o Datový portál GIS s otevřenými geografickými daty. Ten umožňuje stahování datových sad podle potřeb uživatelů i jejich prohlížení v mapě a přináší nové možnosti v oblasti analýzy a využití statistických dat.

    Ladislav Hagara | Komentářů: 2
    5.5. 12:33 | Zajímavý projekt

    Kevin Lin zkouší využívat chytré brýle Mentra při hraní na piano. Vytváří aplikaci AugmentedChords, pomocí které si do brýlí posílá notový zápis (YouTube). Uvnitř brýlí běží AugmentOS (GitHub), tj. open source operační systém pro chytré brýle.

    Ladislav Hagara | Komentářů: 1
    Jaký filesystém primárně používáte?
     (57%)
     (1%)
     (8%)
     (21%)
     (4%)
     (2%)
     (3%)
     (1%)
     (1%)
     (3%)
    Celkem 541 hlasů
     Komentářů: 22, poslední 5.5. 10:06
    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: 305×
    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.