abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 04:33 | Nová verze

    FRRouting (FRR) (Wikipedie), tj. softwarová sada pro směrování síťové komunikace, fork Quagga, byl vydán ve verzi 10.0.

    Ladislav Hagara | Komentářů: 0
    dnes 03:22 | Nová verze

    Julian Andres Klode vydal APT (Advanced Packaging Tool) ve verzích 2.9.0 a 2.9.1. Jedná se o vývojové verze nové větve APT 3.0. Vylepšuje se uživatelské rozhraní. Přidány byly barvičky. Aktuální náhledy a vývoj lze sledovat na Mastodonu.

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

    Miguel de Icaza se na svém blogu rozepsal o vložitelných herních enginech. Kdysi slibné projekty UrhoSharp a Urho3D jsou již mrtvé. Zůstává Godot. Aktuálně vývojáři řeší Pull request #90510 s návrhem knihovny LibGodot.

    Ladislav Hagara | Komentářů: 0
    včera 03:44 | Nová verze

    Byla vydána nová verze 5.0 linuxové distribuce Lakka, jež umožňuje transformovat podporované počítače v herní konzole. Nejnovější Lakka přichází s RetroArchem 1.17.0.

    Ladislav Hagara | Komentářů: 0
    13.4. 15:33 | Nová verze

    OpenTTD (Wikipedie), tj. open source klon počítačové hry Transport Tycoon Deluxe, byl vydán v nové stabilní verzi 14.0. Přehled novinek v seznamu změn. OpenTTD lze instalovat také ze Steamu.

    Ladislav Hagara | Komentářů: 0
    12.4. 16:22 | Nová verze

    Byla vydána nová verze 8.5 multiplatformní digitální pracovní stanice pro práci s audiem (DAW) Ardour. Přehled oprav, vylepšení a novinek v oficiálním oznámení.

    Ladislav Hagara | Komentářů: 1
    11.4. 23:22 | Komunita

    Ubuntu 24.04 (Noble Numbat) Beta bylo vydáno, staženo a po opravě opět vydáno. Oficiální oznámení v diskusním listu. Přehled novinek v poznámkách k vydání. Vydání ostré verze je naplánováno na 25. dubna.

    Ladislav Hagara | Komentářů: 15
    11.4. 21:11 | IT novinky

    Letošní Turingovou cenu (2023 ACM A.M. Turing Award) získal Avi Wigderson.

    Ladislav Hagara | Komentářů: 0
    11.4. 15:33 | Zajímavý software

    Na itch.io si lze nově (𝕏) zahrát nebo i zdarma stáhnout počítačovou hru ROTA. Postavena na herním enginu Godot a její zdrojové kódy jsou k dispozici na GitHubu pod licencí GPLv3.

    Ladislav Hagara | Komentářů: 2
    11.4. 00:22 | Komunita

    O finance Gentoo Linuxu se v USA bude nově starat nezisková organizace Software in the Public Interest (SPI). Aktuálně je pod křídly této organizace 44 projektů. V Evropě se o peníze Gentoo Linuxu stará Förderverein Gentoo e.V..

    Ladislav Hagara | Komentářů: 1
    KDE Plasma 6
     (55%)
     (14%)
     (3%)
     (28%)
    Celkem 341 hlasů
     Komentářů: 4, poslední 6.4. 15:51
    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: 291×
    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.