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: seznamy srovnani [vyřešeno]  (Přečteno 1996 krát)

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
seznamy srovnani [vyřešeno]
« kdy: 10 Února 2009, 09:12:05 »
Po dlouhe dobe jsem zacal delat poradek ve stazenych dokumentech. Zjistil jsem ze mam stazenych cca 600 html stranek s ruznymi navody a tipy.

Po pro mazani jsem se dostal na cislo cca 400 a tady zacina muj problem. Stranky jsou ulozeny ve formatu (soubor, soubor.htm, soubor.html) + adresar (soubor_sobory, soubor_files).

Pri promazavani jsem vsak smazal jen html soubory a slozky zustaly na miste.

Premyslel jsem jak se techto prebytecnych slozek zbavit a nakonec jsem vyplodil tyto skripty:

Kód: [Vybrat]
rm -rf soubory
rm -rf adresare

for b in *; do echo $b | grep -v _soubory | grep -v _files >> soubory; done

for i in *_soubory; do echo "${i%_soubory}" >> adresare; done

for a in *_files; do echo "${a%_files}" >> adresare; done

Tim jsem ziskal dva seznamy "soubory" obsahujici html,htm a "adresare" obsahujici vsechny slozky. Nasledujici idea, pres kterou se nemohu dostat, bylo porovnat tyto seznamy a jejich rozdil tj. slozky ktere jsou navic predhodit rm-rf ke smazani.

Kamen urazu je prave to porovnani, ktere nemohu vyresit.

Cele je to komplikovane tim ze slozky maji koncovku  _soubory i _files a soubory html, htm nebo zadnou

Dekuji za rady
« Poslední změna: 29 Března 2010, 08:43:48 od Anna Taliánová »
"Pouze text v MS Wordu je opravdu čistý, příteli."

Jirka Simonek

  • Návštěvník
  • Příspěvků: 44
Re: seznamy srovnani
« Odpověď #1 kdy: 11 Února 2009, 09:44:46 »
Jestli to dobre chapu, tak bych to udelal jako dva cykly v sobe.
for (pres nazvy v souboru adresare)
{
  vezmi nazev adresare
  for(pres nazvy v souboru soubory)
  {
     vezmi nazev souboru
     porovnej adresar a soubor
     stejne >> na_smazani (vystup do souboru)
   }
}
rm -rf < na_smazani

nettezzaumana

  • Host
Re: seznamy srovnani
« Odpověď #2 kdy: 11 Února 2009, 10:22:59 »
ja to jednoduse nechapu

nettezzaumana

  • Host
Re: seznamy srovnani
« Odpověď #3 kdy: 11 Února 2009, 10:29:41 »
nechapu jaka je v tom veda .. copak `rm -rv soubor*` nestaci?

Jirka Simonek

  • Návštěvník
  • Příspěvků: 44
Re: seznamy srovnani
« Odpověď #4 kdy: 11 Února 2009, 10:40:48 »
Teda napsal jsem to blbe, taklhe by to bylo (snad):
for (pres nazvy v souboru adresare)
{
  vezmi nazev adresare
  for(pres nazvy v souboru soubory)
  {
     vezmi nazev souboru
     porovnej adresar a soubor
     kdyz jsou stejne break
   }
   kdyz nebyl zadny stejny  (adresar  >> na_smazani)
}
rm -rf < na_smazani

Martin - ViPEr*CZ*

Re: seznamy srovnani
« Odpověď #5 kdy: 11 Února 2009, 11:02:01 »
Jeste ze takovyhle hracky jdou i pres c :-)
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

nettezzaumana

  • Host
Re: seznamy srovnani
« Odpověď #6 kdy: 11 Února 2009, 11:05:41 »
ps. porovnani se dela pomoci diff  .. viz `man diff`

nettezzaumana

  • Host
Re: seznamy srovnani
« Odpověď #7 kdy: 11 Února 2009, 11:10:53 »
Jeste ze takovyhle hracky jdou i pres c :-)
.. hmm.

ad.1) jen masochista by to delal v c
ad.2) jj. vsichni vime ze delas v c. tlacis to kam je to jen mozne .. nicmene s timto pristupem ti doporucuju zalozit blog a podelit se o vysledky sve prace a badani ..

ad.3) premejslim, jestli bych taky nemel vyjmenovat nekam jazyky ve kterejch delam :D ..

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: seznamy srovnani
« Odpověď #8 kdy: 11 Února 2009, 12:28:52 »
ps. porovnani se dela pomoci diff  .. viz `man diff`

Jo press diff, ale jak potom ucesat ten seznam to je pro me neresitelne
"Pouze text v MS Wordu je opravdu čistý, příteli."

nettezzaumana

  • Host
Re: seznamy srovnani
« Odpověď #9 kdy: 11 Února 2009, 12:37:50 »
`man sed`, `man grep`, `man perlre` ..

http://forum.ubuntu.cz/index.php/topic,16724.0.html

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: seznamy srovnani
« Odpověď #10 kdy: 11 Února 2009, 13:03:09 »
Tak jsem to za pomoci castecne vyresily:

Tak to funguje jen napul.

find . -type f | while read soubor; do
adresar=${soubor%.htm*};
if [[ -d "${adresar}_soubory" ]] || [[ -d "${adresar}_files" ]]; then
mv -f "$soubor" "${adresar}_files" "${adresar}_soubory" /home/ged/prechodne/vysledek;
fi
done



1. prepinac r pro mv jsem v man ani v helpu nenasel tak jsem ho odstranil
2. prenese se jen cast souboru a adresaru. Je to torchu divne ale je to presne jedna polovina tj 55 souboru

Vypisy:

puvodni obsah adresare:

http://uranit.wz.cz/file/pred.txt

co zustalo v adresari po skriptu:

http://uranit.wz.cz/file/potom_puvodni.txt

co se presunulo do adresare /home/ged/prechodne/vysledek:

http://uranit.wz.cz/file/potom_presunuto.txt

Jeste jsem zapomel zminit, ze nektere nazvy jsou tvoreny znaky: mezera, |, +
"Pouze text v MS Wordu je opravdu čistý, příteli."

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: seznamy srovnani
« Odpověď #11 kdy: 11 Února 2009, 13:54:36 »
Tak jsem zkusil script pustit uz na jednou zfiltrovany adresar a svete div se zase se presunuly nejake soubory.

Projistotu jsem to zkusil jeste dvakrat a uz je vse ok.

Dekuji za trpelivost a rady.
"Pouze text v MS Wordu je opravdu čistý, příteli."

 

Provoz zaštiťuje spolek OpenAlt.