Portál AbcLinuxu, 27. července 2025 07:19


Dotaz: Zotriedenie suborov + ich verzovanie

24.4.2017 09:49 Daniel
Zotriedenie suborov + ich verzovanie
Přečteno: 517×
Odpovědět | Admin

Mam kopec suborov v danom adresari (PDF, TXT, ODT a pod.) a chcel by som ich


1. zotriedit a automaticky presuvat do podadresara (najlepsie skript v BASHi) v tvare AKTUALNY_ADRESAR/ROK/MESIAC/DEN/PRIPONA/subor.s_priponou
2. da sa udrziavat verzia suborov automaticky - nieco ako GITko v tychto podadresaroch najlepsie automaticky ?


Dakujem

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

24.4.2017 10:39 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vse co popisujes je mozne. Nejprve bych je setridil a nasledne zalozil nad setridenou strukturou Git repozitar.
24.4.2017 10:56 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
gitko ti pomoze pri binarnych suboroch ?
24.4.2017 13:36 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Jiste, co by jsi chtel porovnavat hexdump?
24.4.2017 14:57 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
a nahodou taky bashovsky skript neporadis ? :)
24.4.2017 15:49 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
V poradne se predpoklada, ze predvedes alespon pokus o vlastni kod. Napoveda: stat/date, mkdir, mv ..
25.4.2017 12:00 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Nedari sa mi ... :-(
25.4.2017 12:51 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Bez osetreni niceho treba takto:
for f in $(find old_root -type f -name "*.pdf" -o -name "*.txt" -o -name "*.doc"); do
  NEW_DIR="new_root/`date '+%Y/%m/%d' -r $f`"
  mkdir -p $NEW_DIR 2> /dev/null
  mv $f NEW_DIR
done
Doporucoval bych si to nejprve otestovat at vis co delas..
25.4.2017 13:02 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
A pripona, bez subshellu:
for f in $(find old_root -type f -name "*.pdf" -o -name "*.txt" -o -name "*.odt"); do
  NEW_DIR="new_root/$(date '+%Y/%m/%d' -r $f)/$(basename $f | sed 's/.*\.//')"
  mkdir -p $NEW_DIR 2> /dev/null
  mv $f NEW_DIR
done
25.4.2017 13:24 .
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Prej bez subshellu... :-D
25.4.2017 13:36 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Myslim tim bez backslash varianty..
25.4.2017 15:04 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
backquote
25.4.2017 13:43 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Dakujem za nakopnutie, spravil som to univerzalnejsie... Skript prehlada zadanu cestu $WHERE v ramci cesty vytvori adresar _sorted a do neho vytvori adresare /roky/mesiace/dni/pripony a do tych adresarov s priponami presunie prislusne subory s priponou... Tak tento skript hadam pomoze aj ostatnym... Este raz dakujem :-)
#!/bin/bash
WHERE="/tmp/bordel"

for f in $(find $WHERE -type f -name "*.*"); do
  NEW_DIR="$WHERE/_sorted/$(date '+%Y/%m/%d' -r $f)/$(basename $f | sed 's/.*\.//')"
  mkdir -p $NEW_DIR 2> /dev/null
  mv $f $NEW_DIR
done
25.4.2017 14:34 karma
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Pro domácí použití vám to stačí, ale na server bych to nedával. Takhle vypadá rychlejší a robustnější řešení (místo ln použijete mv):
TO="/tmp/repo";  FROM="/tmp"
find "$FROM" -type f  -printf "$TO/%TY/%Tm/%Td\0" | sort -z | uniq -z | xargs -r -0 mkdir -p
find "$FROM" -type f  -maxdepth 1  -printf "%p\0$TO/%TY/%Tm/%Td/%f\0" | xargs -r -0 -l2 ln -s
25.4.2017 14:36 karma
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
oprava: samozřejmě v prvním find má být také -maxdepth 1
25.4.2017 14:49 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
cize nejako takto ?
TO="/tmp/repo";  FROM="/tmp"
find "$FROM" -type f -maxdepth 1 -printf "$TO/%TY/%Tm/%Td\0" | sort -z | uniq -z | xargs -r -0 mkdir -p
find "$FROM" -type f -maxdepth 1 -printf "%p\0$TO/%TY/%Tm/%Td/%f\0" | xargs -r -0 -l2 ln -s
26.4.2017 11:10 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
oprava - zabudol som na mv
TO="/tmp/repo";  FROM="/tmp"
find "$FROM" -type f -maxdepth 1 -printf "$TO/%TY/%Tm/%Td\0" | sort -z | uniq -z | xargs -r -0 mkdir -p
find "$FROM" -type f -maxdepth 1 -printf "%p\0$TO/%TY/%Tm/%Td/%f\0" | xargs -r -0 -l2 mv
25.4.2017 14:51 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
a s tym verzovanim nevies nejako pomoct ? git add * a potom denne git commit staci ?
25.4.2017 17:20 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
To by melo stacit, nebude nejaky DMS system vhodnejsi? Je to jen pro osobni potrebu?
26.4.2017 08:52 Daniel
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Praveze pre firemnu potrebu... :-/
26.4.2017 13:17 NN
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Jmenuje se to "Document Management System" najdi si to laskave.. napriklad OpenKM.
24.4.2017 17:07 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Odpovědět | | Sbalit | Link | Blokovat | Admin
Bash je jednoduchý, ale blbě se v něm ladí, vše si musíš vyzkoušet, odladit a až pak to teprve spustit. Není to složité, ale docela pracné. Pokud mají soubor v názvech mezery/nějaké divoké znaky, bude to o to složitější.

IMO bys měl snazší třeba python a v nějakém IDE (pycharm) si to odkrokovat, kouknout na hodnoty proměnných, použít vhodné funkce atd.

Mám také docela složité funkcionality napsané v bashi, ale když vidím, co všechno jsem tam musel dělat za obezličky, dneska už bych na pracovní stanici použil python. Samozřejmě pokud by to nešlo ladit v IDE (např. spustitelné jen na serveru, bez možnosti to ladit na lokále), zůstal bych u bashe.

24.4.2017 20:30 Kit | skóre: 45 | Brno
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Python můžeš v konzoli na serveru ladit úplně stejně jako Bash, resp. Python je na to vybaven mnohem lépe.
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
25.4.2017 08:45 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Zotriedenie suborov + ich verzovanie
Super, o to lépe. Netypované jazyky nemám rád, ale python vs. bash pro složitější skript je den a noc :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.