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: Zmena nazvu souboru do uhledne struktury  (Přečteno 2130 krát)

Sviccc

  • Návštěvník
  • Příspěvků: 38
Zmena nazvu souboru do uhledne struktury
« kdy: 23 Října 2011, 01:56:55 »
Potreboval bych poradit se skriptikem.Mam ve slozce soubory ve formatu AB-1110201540-neco.tar.bz2
Jak jde videt, v nazvu je zapsany od zadu cas a datum posledni zmeny souboru.Pomoci skriptu bych chtel vsechny tyto soubory prejmenovat do podoby 20.10.11-15:40-neco.tar.bz2 se zachovanim promenne "neco".Cili skript ktery : precte nazev, ulozi si jednotlive slova do promennych, a nasledne z techto promennych posklada novy nazev.Nakopnul by me nekdo?Dekuji ;-)
BackTrack 5 powered E7600 @ 3ghz, 4GB DDR3, SB Live! 5.1 Digital (emu10k1), Sapphire HD 5750 Vapor-X 1GB.
Hosting Counter-Strike 1.6 servers at www.granatovajahoda.cz

Václav Sobota

  • Aktivní člen
  • *
  • Příspěvků: 224
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #1 kdy: 23 Října 2011, 02:27:28 »
Ahoj, zkus pouzit programek sed. Umi nahrazovat (substituovat) text podle zadaneho klice. Resil jsem nedavno neco podobneho, koukni se na tahle vlakna:
http://forum.ubuntu.cz/index.php?topic=58584.msg419057 a http://forum.ubuntu.cz/index.php?topic=58085.msg415043 . Snad ti to pomuze, ja jsem pomoci sedu (a kolegu tady z fora) vyresil docela komplikovanou zalezitost - uvidis sam v tech vlaknech :)

Sviccc

  • Návštěvník
  • Příspěvků: 38
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #2 kdy: 23 Října 2011, 02:51:55 »
Ahoj, zkus pouzit programek sed. Umi nahrazovat (substituovat) text podle zadaneho klice. Resil jsem nedavno neco podobneho, koukni se na tahle vlakna:
http://forum.ubuntu.cz/index.php?topic=58584.msg419057 a http://forum.ubuntu.cz/index.php?topic=58085.msg415043 . Snad ti to pomuze, ja jsem pomoci sedu (a kolegu tady z fora) vyresil docela komplikovanou zalezitost - uvidis sam v tech vlaknech :)
Pomoci sedu mi to pripada moc komplikovane, prece jenom potrebuju jen ls --full-time *.bz2 , z toho ulozit do promenne $seste a $sedme slovo, nasledne pomoci mv a promennych zkonstruovat nazev.A samozrejme zasmyckovat.Hlavne nevim, jak ulozit urcite slovo v radce do promenne.Mozna se mylim ? :-)
BackTrack 5 powered E7600 @ 3ghz, 4GB DDR3, SB Live! 5.1 Digital (emu10k1), Sapphire HD 5750 Vapor-X 1GB.
Hosting Counter-Strike 1.6 servers at www.granatovajahoda.cz

Václav Sobota

  • Aktivní člen
  • *
  • Příspěvků: 224
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #3 kdy: 23 Října 2011, 03:31:00 »
Tak ted mam pocit ze o programovani vis asi o neco vic nez ja... :D
Jak jsem naznacil, nejsem expert ale myslim, ze sed je spis z tech snazsich nastroju, ikdyz ho asi pouzijes jenom jako dilci v nejakem skriptu zhruba podle tveho popisu. Nicmene je mozne, ze na to preformatovani ciselneho kodu na datum nekde najdes uz hotovy sedovsky skript... (nebo treba skript pro awk)

Sviccc

  • Návštěvník
  • Příspěvků: 38
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #4 kdy: 23 Října 2011, 03:54:06 »
No v bashi pisu skriptz prilezitostne a kdyz jednou za cas pisu neco slozitejsiho, vzdy narazim na diru v me neznalosti a potrebuju nakopnout.Rozhodne se ale spise povazuju za zacatecnika.Bodl by nejaky navrh...
BackTrack 5 powered E7600 @ 3ghz, 4GB DDR3, SB Live! 5.1 Digital (emu10k1), Sapphire HD 5750 Vapor-X 1GB.
Hosting Counter-Strike 1.6 servers at www.granatovajahoda.cz

YaD

  • Návštěvník
  • Příspěvků: 69
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #5 kdy: 23 Října 2011, 10:15:47 »
Skúsil by som to cez Python. Ale tam bude problém, že budeš používať strašne veľa rôznych vecí a z každej len trošku (čo je pravda), ale mal by potom z toho vzniknúť relatívne prehľadný cyklus ;).

Na prechádzanie súborov:
http://docs.python.org/library/os.path.html#os.path.walk

Premenovávanie:
http://docs.python.org/library/os.html#os.rename

Rozloženie mena súboru:
http://docs.python.org/library/re.html
Z hlavy ma napáda niečo takéto:
Kód: [Vybrat]
^AB-(\d+)-.*\.tar\.bz2$A potom si vytiahnuť potrebnú zátvorku ;).
Ale niečo premakanejšie:
Kód: [Vybrat]
^AB-(?P<year>\d{2})(?P<month>\d{2})(<?P<day>\d{2})(?P<hours>\d{2})(?P<minutes>\d{2})-.*\.tar\.bz2$V praxi:
Kód: [Vybrat]
re.match(r"^AB-(?P<year>\d{2})(?P<month>\d{2})(<?P<day>\d{2})(?P<hours>\d{2})(?P<minutes>\d{2})-.*\.tar\.bz2$").groupdict()
Práca s časom:
http://docs.python.org/library/datetime.html#datetime.datetime.strftime (formátovanie)

So GL :).

Sviccc

  • Návštěvník
  • Příspěvků: 38
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #6 kdy: 23 Října 2011, 15:37:29 »
Nerikejte mi, ze neexistuje bash varianta ;-)
Nerad bych zacinal jeste s Pythonem, chci v tom mit poradek.
Tak se zeptam jednoduse: jak v bashi vypsat u souboru pouze datum posledni zmeny?
Dekuji ;-)
BackTrack 5 powered E7600 @ 3ghz, 4GB DDR3, SB Live! 5.1 Digital (emu10k1), Sapphire HD 5750 Vapor-X 1GB.
Hosting Counter-Strike 1.6 servers at www.granatovajahoda.cz

pacholik

  • Závislák
  • ***
  • Příspěvků: 2072
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #7 kdy: 23 Října 2011, 17:07:48 »
já bych to napsal jaks říkal, naplácat do proměnných a je to
Kód: [Vybrat]
for i in *; do
date=`cut -d"-" -f2` <<< $i`
d=`cut -c 5-6 <<< $date`
m=`cut -c 3-4 <<< $date`
y=`cut -c 1-2 <<< $date`
H=`cut -c 7-8 <<< $date`
M=`cut -c 9-10 <<< $date`

mv $i $d.$m.$y-$H:$M
done

jestli chceš ten datum poslední změny souboru tak
Kód: [Vybrat]
man stat

Sviccc

  • Návštěvník
  • Příspěvků: 38
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #8 kdy: 23 Října 2011, 17:29:19 »
já bych to napsal jaks říkal, naplácat do proměnných a je to
Kód: [Vybrat]
for i in *; do
date=`cut -d"-" -f2` <<< $i`
d=`cut -c 5-6 <<< $date`
m=`cut -c 3-4 <<< $date`
y=`cut -c 1-2 <<< $date`
H=`cut -c 7-8 <<< $date`
M=`cut -c 9-10 <<< $date`

mv $i $d.$m.$y-$H:$M
done

jestli chceš ten datum poslední změny souboru tak
Kód: [Vybrat]
man stat

Takze cut, to jsem potreboval vedet.dekuji moc ;-)
BackTrack 5 powered E7600 @ 3ghz, 4GB DDR3, SB Live! 5.1 Digital (emu10k1), Sapphire HD 5750 Vapor-X 1GB.
Hosting Counter-Strike 1.6 servers at www.granatovajahoda.cz

Sviccc

  • Návštěvník
  • Příspěvků: 38
Re:Zmena nazvu souboru do uhledne struktury
« Odpověď #9 kdy: 23 Října 2011, 18:03:30 »
Vysledek
  • for i in GJ*.dem.bz2; do
       rok=`stat --format=%y $i | cut -c 1-4`
       mesic=`stat --format=%y $i | cut -c 6-7`
       den=`stat --format=%y $i | cut -c 9-10`
       cas=`stat --format=%y $i | cut -c 12-19`
       mapa=`ls $i | cut -c 18-`
       mv $i $den.$mesic.$rok-$cas-$mapa
    done
Funguje presne podle mych predstav.Jeste jednou dekuji za ochotnou pomoc pri nakopnuti ;-) :-*
BackTrack 5 powered E7600 @ 3ghz, 4GB DDR3, SB Live! 5.1 Digital (emu10k1), Sapphire HD 5750 Vapor-X 1GB.
Hosting Counter-Strike 1.6 servers at www.granatovajahoda.cz

 

Provoz zaštiťuje spolek OpenAlt.