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í
×
    včera 21:55 | Nová verze

    Byl vydán Fedora Asahi Remix 40, tj. linuxová distribuce pro Apple Silicon vycházející z Fedora Linuxu 40.

    Ladislav Hagara | Komentářů: 4
    včera 20:22 | IT novinky

    Představena byla služba Raspberry Pi Connect usnadňující vzdálený grafický přístup k vašim Raspberry Pi z webového prohlížeče. Odkudkoli. Zdarma. Zatím v beta verzi. Detaily v dokumentaci.

    Ladislav Hagara | Komentářů: 0
    včera 12:55 | Nová verze

    Byla vydána verze R14.1.2 desktopového prostředí Trinity Desktop Environment (TDE, fork KDE 3.5). Přehled novinek v poznámkách k vydání, podrobnosti v seznamu změn.

    JZD | Komentářů: 0
    7.5. 18:55 | IT novinky

    Dnešním dnem lze již také v Česku nakupovat na Google Store (telefony a sluchátka Google Pixel).

    Ladislav Hagara | Komentářů: 10
    7.5. 18:33 | IT novinky

    Apple představil (keynote) iPad Pro s čipem Apple M4, předělaný iPad Air ve dvou velikostech a nový Apple Pencil Pro.

    Ladislav Hagara | Komentářů: 2
    7.5. 17:11 | Nová verze

    Richard Biener oznámil vydání verze 14.1 (14.1.0) kolekce kompilátorů pro různé programovací jazyky GCC (GNU Compiler Collection). Jedná se o první stabilní verzi řady 14. Přehled změn, nových vlastností a oprav a aktualizovaná dokumentace na stránkách projektu. Některé zdrojové kódy, které bylo možné přeložit s předchozími verzemi GCC, bude nutné upravit.

    Ladislav Hagara | Komentářů: 0
    7.5. 13:44 | Komunita

    Free Software Foundation zveřejnila ocenění Free Software Awards za rok 2023. Vybráni byli Bruno Haible za dlouhodobé příspěvky a správu knihovny Gnulib, nováček Nick Logozzo za front-end Parabolic pro yt-dlp a tým Mission logiciels libres francouzského státu za nasazování svobodného softwaru do praxe.

    Fluttershy, yay! | Komentářů: 0
    7.5. 13:11 | IT novinky

    Před 10 lety Microsoft dokončil akvizici divize mobilních telefonů společnosti Nokia a pod značkou Microsoft Mobile ji zanedlouho pohřbil.

    Ladislav Hagara | Komentářů: 2
    6.5. 21:33 | Komunita

    Fedora 40 release party v Praze proběhne v pátek 17. května od 18:30 v prostorách společnosti Etnetera Core na adrese Jankovcova 1037/49, Praha 7. Součástí bude program kratších přednášek o novinkách ve Fedoře.

    Ladislav Hagara | Komentářů: 5
    6.5. 21:11 | IT novinky

    Stack Overflow se dohodl s OpenAI o zpřístupnění obsahu Stack Overflow pro vylepšení OpenAI AI modelů.

    Ladislav Hagara | Komentářů: 1
    Podle hypotézy Mrtvý Internet mj. tvoří většinu online interakcí boti.
     (63%)
     (7%)
     (14%)
     (16%)
    Celkem 139 hlasů
     Komentářů: 10, poslední včera 17:35
    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.