Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Jak na hromadné kopírování adresářů podle obsahu v souborech  (Přečteno 1994 krát)

StenM

  • Návštěvník
  • Příspěvků: 3
Dobrý den,

 rád bych se zeptal, zda mi někdo může poradit, jak automaticky kopírovat celé adresáře-složky podle obsahu v souborech? Třeba pomocí nějakého skriptu.

 Mám data s cca 2000-3000 položek a každá položka obsahuje strukturu podadresářů (např. Feb20-2008-26/1/pdata/1; Oct03-2009-11/2/pdata/1; ...). Soubor (title) s rozhodujícím řetězcem je až v tom nejvyšším adresáři, ale kopírovat potřebuji celý adresář včetně všech souborů (např. Feb20-2008-26).

Za každou pomoc předem děkuji

Stanislav

Používám Kubuntu 9.10

mka

  • Závislák
  • ***
  • Příspěvků: 1907
  • Chybovat je moje.
    • Příložany Cé Zet
Re: Jak na hromadné kopírování adresářů podle obsahu v souborech
« Odpověď #1 kdy: 18 Března 2010, 12:01:32 »
A co takhle
Kód: [Vybrat]
man cp? S důrazem na volbu -r; ale umí toho daleko víc, je to v čestině :-)

Jinak z toho popisu nahoře nějak ne zcela úplně chápu, co vlastně potřebuješ; bodla by nějaká
Kód: [Vybrat]
ukázka té souboruvé struktury :-)
« Poslední změna: 18 Března 2010, 12:05:34 od mka »

StenM

  • Návštěvník
  • Příspěvků: 3
Re: Jak na hromadné kopírování adresářů podle obsahu v souborech
« Odpověď #2 kdy: 18 Března 2010, 12:41:25 »
adresářový strom je asi takovíto:
Kód: [Vybrat]
|-- Aug01-2009-20
|   `-- 1                
|       |-- acqu
|       |-- acqus
|       |-- audita.txt
|       |-- fid
|       |-- format.temp
|       |-- orig
|       |-- pdata
|       |   `-- 1
|       |       |-- auditp.txt
|       |       |-- email_Aug01-2009-20_1_1.pdf
|       |       |-- intrng
|       |       |-- outd
|       |       |-- parm.txt
|       |       |-- peak.txt
|       |       |-- peaks
|       |       |-- proc
|       |       |-- procs
|       |       `-- title
|       |-- prosol_History
|       |-- pulseprogram
|       |-- scon
|       `-- uxnmr.par
|-- Apr25-2009-3
|   `-- 3
|       |-- acqu
|       |-- acqus
|       |-- audita.txt
|       |-- fid
|       |-- format.temp
|       |-- orig
|       |-- pdata
|       |   `-- 1
|       |       |-- auditp.txt
|       |       |-- email_Apr25-2009-3_3_1.pdf
|       |       |-- intrng
|       |       |-- outd
|       |       |-- parm.txt
|       |       |-- peak.txt
|       |       |-- peaks
|       |       |-- proc
|       |       |-- procs
|       |       `-- title
|       |-- prosol_History
|       |-- pulseprogram
|       |-- scon
|       `-- uxnmr.par


 Potřebuji rozhodnout podle obsahu souboru "title" a zkopírovat celý adresář "Aug01-2009-20" nebo "Apr25-2009-3". Něco jako kombinace následujících příkladů:

Kód: [Vybrat]
$find /home/x/dat -name "title" -exec grep "CHL" '{}' /dev/null \; -print
=> vypíše seznam souborů s celou adresou.

Kód: [Vybrat]
find /home/x/dat -name "title" -exec grep "CHL" '{}' /dev/null \; -exec cp {} -r /home/x/cop \;
=>došlo jen ke zkopírování souboru "title" obsahujícímu řetězec "CHL"

Kód: [Vybrat]
find . -name "title" -exec grep "CHL" '{}' /dev/null \; -exec cp {} --parents -r /home/x/cop \;

tree /home/x/cop

`-- Apr11-2008-3
    `-- 1
        `-- pdata
            `-- 1
                `-- title
=> kromě souboru "title" se nic dalšího nepřekopíruje, i když je to včetně cesty

//Tadeáš Pařík EDIT: Prosím, používejte code.
« Poslední změna: 18 Března 2010, 15:26:56 od StenM »

MacHala

  • Stálý člen
  • **
  • Příspěvků: 1104
  • Big Bro iz watching joo!
    • ZlejT
Re: Jak na hromadné kopírování adresářů podle obsahu v souborech
« Odpověď #3 kdy: 19 Března 2010, 20:00:14 »
no ty tvoje findy jsem nejak nepochopil, co treba neco jako:
Kód: [Vybrat]
find /home/x/dat -maxdepth 1 -mindepth 1 -type d | while read line
do
  if grep "vzor" `find $line -name 'title'`
  then
    cp -r $line /home/x/cop
  fi
done
?


EDIT: psal jsem to z hlavy + viz. paticka
« Poslední změna: 19 Března 2010, 20:02:20 od MacHala »
Prislusnik ligy, za kreativni pouzivani interpunkcnich znamenek, carek, predevsim.
=======================================
Tweetuju jako http://twitter.com/zl8

StenM

  • Návštěvník
  • Příspěvků: 3
Re: Jak na hromadné kopírování adresářů podle obsahu v souborech
« Odpověď #4 kdy: 19 Března 2010, 21:38:55 »
Díky, to je to co jsem potřeboval.  :)

Má to jen jednu drobnosti, které tomu brání dosáhnout dokonalosti. Neporadí si to s názvy adresářů obsahujících mezeru (dalo se to naštěstí řešit ručně, bylo jich jen 5)

S-


Tadeáš Pařík

  • Předseda občanského sdružení Ubuntu ČR a člen placené komunitní podpory
  • Příspěvků: 6543
    • Ubuntu.cz
Re: Jak na hromadné kopírování adresářů podle obsahu v souborech
« Odpověď #5 kdy: 19 Března 2010, 21:46:46 »
Díky, to je to co jsem potřeboval.  :)

Má to jen jednu drobnosti, které tomu brání dosáhnout dokonalosti. Neporadí si to s názvy adresářů obsahujících mezeru (dalo se to naštěstí řešit ručně, bylo jich jen 5)

S-



je = /nazev souboru/nazev souboru/
má být = /nazev\ souboru/nazev\ souboru/
případně = "/nazev souboru/nazev souboru/"
Do života je třeba mít připravený rozum, nebo provaz.

Ubuntu 14.04 64 bit / Windows 10 Pro - Intel DH87MC, Intel Core i7-4771, 8GB Ram, Kingston HyperX 3K SSD 120GB, Intel HD 4600 a ASUS GTX660-DC2OCPH-2GD5
Ubuntu 14.04 64bit - HP ProBook 4525s
Ubuntu 14.10 32bit - ThinkPad R52 (testování)

pariktadeas@jabbim.cz

 

Provoz zaštiťuje spolek OpenAlt.