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: Skript na rozdělení souboru (slovníku) [vyřešeno]  (Přečteno 3391 krát)

Marcos.MM

  • Návštěvník
  • Příspěvků: 18
Skript na rozdělení souboru (slovníku) [vyřešeno]
« kdy: 29 Dubna 2009, 17:40:18 »
Zdravím,
potřeboval bych prosím Vás pomoct s následujícím problémem. Jde mi o to napsat skript, který mi rozdělí soubor (slovník) na části. Znám příkazy split, csplit apod. Ale pokud vím, těmi dokážu ten slovník rozdělit jen dle velikosti. Slovník má např. 10 mb, tak split jej rozdělí dle definované velikosti. Ale nedokáže jej rozdělit jen s tím parametrem, že jej chci třeba na tři části bez toho, abych musel zjišťovat velikost slovníku. Něco málo v bashi jsem dělal, ale až tak moc do toho nevidím. Díky za případné rady či nápady.
« Poslední změna: 03 Května 2009, 22:33:04 od kiklhorn »
Asus G73 + BackTrack 4 H4F

Numirah

  • Aktivní člen
  • *
  • Příspěvků: 191
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #1 kdy: 29 Dubna 2009, 21:13:06 »
Ak ti ide iba o delenie podľa veľkosti, spočítal by som si ju:
Kód: [Vybrat]
velkost=`find /cesta/k/suboru/slovnik.xxx -printf %s`
echo $velkost
vydelil troma
Kód: [Vybrat]
deleno=$((${velkost} / 3)) a potom by som to predal splitu, alebo čomu už budeš chcieť.

Samozrejme cestu k súboru (ak sa mení) a na koľko častí to rozdeliť môžeš načítavať z pozičných ppremenných ($1 alebo $@) nemusí to byť "natvrdo" v scripte.

edit :
až teraz som si všimol: "bez toho, abych musel zjišťovat velikost slovníku."
« Poslední změna: 29 Dubna 2009, 21:15:22 od Numirah »
Ubuntu12.04, Asus M2N-X PLUS, AMD Athlon 64X2 4200+ (2.2GHz), 2GB RAM Kingston 800MHz, 1TB HDD SATA, n-Vidia GeForce 8500GT 512MB, zvuk onboard

Marcos.MM

  • Návštěvník
  • Příspěvků: 18
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #2 kdy: 29 Dubna 2009, 21:30:17 »
Mno pokud to takto půjde, tak není potřeba dodržet to, abych nemusel zjišťovat velikost. Díky, vyzkouším.  ;)

Edit: Děkuji mnohokrát, a kdyby to někoho zajímalo, tady je výsledný skript. Neříkám, že je profi, ale funguje.

#!/bin/bash
echo "Zadejte plnou cestu k souboru:"
read cesta
echo "Zadejte počet rozdělení:"
read pocet
velikost=`find $cesta -printf %s`
deleno=$((${velikost} / $pocet))
echo "Soubor $cesta o velikosti $velikost bajtů bude rozdělen.."
echo "..na $pocet části o velikosti $deleno bajtů..."
split -d -b $deleno $cesta
echo "Hotovo."
« Poslední změna: 30 Dubna 2009, 00:03:39 od Marcos.MM »
Asus G73 + BackTrack 4 H4F

Numirah

  • Aktivní člen
  • *
  • Příspěvků: 191
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #3 kdy: 30 Dubna 2009, 07:12:15 »
Samozrejme cestu k súboru (ak sa mení) a na koľko častí to rozdeliť môžeš načítavať z pozičných ppremenných ($1 alebo $@) nemusí to byť "natvrdo" v scripte.

#!/bin/bash

velikost=`find $1 -printf %s`
deleno=$((${velikost} / $2))
echo "Soubor $1 o velikosti $velikost bajtů bude rozdělen.."
echo "..na $2 části o velikosti $deleno bajtů..."
split -d -b $deleno $1
echo "Hotovo."
exit 0

spusti script
Kód: [Vybrat]
rozdel /cesta/k/suboru/slovnik.xxx 3
Ubuntu12.04, Asus M2N-X PLUS, AMD Athlon 64X2 4200+ (2.2GHz), 2GB RAM Kingston 800MHz, 1TB HDD SATA, n-Vidia GeForce 8500GT 512MB, zvuk onboard

petergula

  • Stálý člen
  • **
  • Příspěvků: 1016
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #4 kdy: 30 Dubna 2009, 08:34:55 »
To numirah:
Citace
velikost=`find $1 -printf %s`
nemalo by tam byt skor nieco ako:
Kód: [Vybrat]
velikost=`find . -iname $1 -printf %s`, aby find hladal velkost suboru s danym menom v aktualnom adresari.
ntbk Dell 6420 (Amd Ati, Intel i7, 4GB RAM, 256GB SSD ...)
secondary/u svokrovcov:
Xubuntu (64bit) ntbk Asus A6Je (Ati X1450, Intel Core2Duo T5500, 2.5GB RAM ...)

Numirah

  • Aktivní člen
  • *
  • Příspěvků: 191
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #5 kdy: 30 Dubna 2009, 14:51:38 »
 >> petergula
mohlo by byť, ale keďže zadávaš celú cestu k jednému konkrétnemu súboru nieje to treba
Ubuntu12.04, Asus M2N-X PLUS, AMD Athlon 64X2 4200+ (2.2GHz), 2GB RAM Kingston 800MHz, 1TB HDD SATA, n-Vidia GeForce 8500GT 512MB, zvuk onboard

nettezzaumana

  • Host
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #6 kdy: 30 Dubna 2009, 16:43:50 »
Citace
#!/bin/bash

if test $# -ne 2; then
        echo "gimme two parameteres, path to file(1) and decided parts(2)";
        exit;
fi

if test ! -f "$1"; then
        echo "bad file ..";
        exit;
fi

velikost=`du -k "$1" | sed 's/\s\+.*//'`;
velikost_casti=$(($velikost / $2 + $velikost % $2));

echo "soubor bude rozdelen na $2 casti o velikosti $velikost_casti""Kb";

split --bytes=$velikost_casti\K "$1" $1.


Numirah

  • Aktivní člen
  • *
  • Příspěvků: 191
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #7 kdy: 30 Dubna 2009, 20:56:31 »
poprípade ma napadá ešte tretia podmienka
Kód: [Vybrat]
if ! [[ "$2" =~ ^[0-9]+$ ]] ; then
    echo "druhy parameter nieje cislo"
    exit
fi
Ubuntu12.04, Asus M2N-X PLUS, AMD Athlon 64X2 4200+ (2.2GHz), 2GB RAM Kingston 800MHz, 1TB HDD SATA, n-Vidia GeForce 8500GT 512MB, zvuk onboard

Marcos.MM

  • Návštěvník
  • Příspěvků: 18
Re: Skript na rozdělení souboru (slovníku)
« Odpověď #8 kdy: 03 Května 2009, 22:22:07 »
Vážně všem děkuji za rady. Nějak jsem si z toho splácal potřebný skript.  ;)
Asus G73 + BackTrack 4 H4F

 

Provoz zaštiťuje spolek OpenAlt.