Fórum Root.cz
Hlavní témata => Software => Téma založeno: Honza1 24. 08. 2015, 12:25:45
-
ahoj
Chtěl bzch se zeptat, jak najít ve složce a podsložkách všechny obrázky jednoho typu, např. gif a zkovertovat je do PNG a smazat původní. Ostatní typy (JPG) nechat, a rozbalit všechny archívy s danou příponou. Zkoušel jsem na to napsat skript, ale vždy se to zacyklilo. MOžná by to nějak šlo pomocí find.
-
Rozděl si to na 2 nezávislé úkoly:
1) najít a upravit obrázky
2) rozbalit archiv
Find pro nalezení všech souborů s příponou .gif se určitě použít dá:
find . -name "*.gif".
Pak záleží, co konkrétně s těmi soubory děláš. Pokud je to něco jednoduchého, tak by šlo použít xargs:
find [argumenty] | xargs příkaz [argumenty]
xargs zajistí předání standardního vstupu (to, co dostane přes rouru) jako argument svého příkazu. (find something | xargs rm tedy zavolá "rm něco" pro každý řádek co vyplivne find.)
Pokud děláš něco složitějšího, tak bude jednodušší si výstup find uložit do proměnné a procházet v cyklu. Jen pozor, pokud se ti ve jménech souborů/adresářů mohou vyskytnout mezery, tak to budeš muset náležitě ošetřit (možný hint: IFS).
-
Rozdělení úkolů určitě, jen jsem to shrnul do jednoho dotazu.
Nějak takto ?
for i in `find . -name "*.gif"`; do j=`echo ${i} | sed 's/.gif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
Funguje a jména sedí. Archivy budou podobně.
Co se táče mezer (diakritiky a podobného bordelu), tak už jsem se poučil. Jména souborů a složek jedině z alfanumerických znaků (62) a podtržítka.
-
Sada příkazů pro cnvert se zaqchováním hlobky 8 a 24 bit (jpg a pod. schválně nezahrnuto - tam už je komprese dost).
for i in `find . -name "*.gif"`; do j=`echo ${i} | sed 's/.gif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.GIF"`; do j=`echo ${i} | sed 's/.GIF//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Gif"`; do j=`echo ${i} | sed 's/.Gif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.png"`; do j=`echo ${i} | sed 's/.png//g'` ; convert ${i} ${j}.bmp ; rm ${i} ; done
for i in `find . -name "*.PNG"`; do j=`echo ${i} | sed 's/.PNG//g'` ; convert ${i} ${j}.bmp ; rm ${i} ; done
for i in `find . -name "*.Png"`; do j=`echo ${i} | sed 's/.Png//g'` ; convert ${i} ${j}.bmp ; rm ${i} ; done
for i in `find . -name "*.bmp"`; do j=`echo ${i} | sed 's/.bmp//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.BMP"`; do j=`echo ${i} | sed 's/.Bmp//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Bmp"`; do j=`echo ${i} | sed 's/.Bmp//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.tif"`; do j=`echo ${i} | sed 's/.tif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.TIF"`; do j=`echo ${i} | sed 's/.TIF//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Tif"`; do j=`echo ${i} | sed 's/.Tif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.tiff"`; do j=`echo ${i} | sed 's/.tiff//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.TIFF"`; do j=`echo ${i} | sed 's/.TIFF//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Tiff"`; do j=`echo ${i} | sed 's/.Tiff//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.pcx"`; do j=`echo ${i} | sed 's/.pcx//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.PCX"`; do j=`echo ${i} | sed 's/.PCX//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Pcx"`; do j=`echo ${i} | sed 's/.Pcx//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.ico"`; do j=`echo ${i} | sed 's/.ico//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.ICO"`; do j=`echo ${i} | sed 's/.ICO//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Ico"`; do j=`echo ${i} | sed 's/.Ico//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.raw"`; do j=`echo ${i} | sed 's/.raw//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.RAW"`; do j=`echo ${i} | sed 's/.RAW//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Raw"`; do j=`echo ${i} | sed 's/.Raw//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
-
A pro 8-bit hloubku u všech obrázků
for i in `find . -name "*.png"`; do j=`echo ${i} | sed 's/.png//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.PNG"`; do j=`echo ${i} | sed 's/.PNG//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Png"`; do j=`echo ${i} | sed 's/.Png//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.bmp"`; do j=`echo ${i} | sed 's/.bmp//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.BMP"`; do j=`echo ${i} | sed 's/.Bmp//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Bmp"`; do j=`echo ${i} | sed 's/.Bmp//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.tif"`; do j=`echo ${i} | sed 's/.tif//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.TIF"`; do j=`echo ${i} | sed 's/.TIF//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Tif"`; do j=`echo ${i} | sed 's/.Tif//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.tiff"`; do j=`echo ${i} | sed 's/.tiff//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.TIFF"`; do j=`echo ${i} | sed 's/.TIFF//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Tiff"`; do j=`echo ${i} | sed 's/.Tiff//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.pcx"`; do j=`echo ${i} | sed 's/.pcx//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.PCX"`; do j=`echo ${i} | sed 's/.PCX//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Pcx"`; do j=`echo ${i} | sed 's/.Pcx//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.ico"`; do j=`echo ${i} | sed 's/.ico//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.ICO"`; do j=`echo ${i} | sed 's/.ICO//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Ico"`; do j=`echo ${i} | sed 's/.Ico//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.raw"`; do j=`echo ${i} | sed 's/.raw//g'` ; convert -quality 100 ${i} ${j}.gif ;rm ${i} ; done
for i in `find . -name "*.RAW"`; do j=`echo ${i} | sed 's/.RAW//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Raw"`; do j=`echo ${i} | sed 's/.Raw//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.gif"`; do j=`echo ${i} | sed 's/.gif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.GIF"`; do j=`echo ${i} | sed 's/.GIF//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Gif"`; do j=`echo ${i} | sed 's/.Gif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
-
A pro 8-bit hloubku u všech obrázků
for i in `find . -name "*.png"`; do j=`echo ${i} | sed 's/.png//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.PNG"`; do j=`echo ${i} | sed 's/.PNG//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Png"`; do j=`echo ${i} | sed 's/.Png//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.bmp"`; do j=`echo ${i} | sed 's/.bmp//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.BMP"`; do j=`echo ${i} | sed 's/.Bmp//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Bmp"`; do j=`echo ${i} | sed 's/.Bmp//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.tif"`; do j=`echo ${i} | sed 's/.tif//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.TIF"`; do j=`echo ${i} | sed 's/.TIF//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Tif"`; do j=`echo ${i} | sed 's/.Tif//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.tiff"`; do j=`echo ${i} | sed 's/.tiff//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.TIFF"`; do j=`echo ${i} | sed 's/.TIFF//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Tiff"`; do j=`echo ${i} | sed 's/.Tiff//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.pcx"`; do j=`echo ${i} | sed 's/.pcx//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.PCX"`; do j=`echo ${i} | sed 's/.PCX//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Pcx"`; do j=`echo ${i} | sed 's/.Pcx//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.ico"`; do j=`echo ${i} | sed 's/.ico//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.ICO"`; do j=`echo ${i} | sed 's/.ICO//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Ico"`; do j=`echo ${i} | sed 's/.Ico//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.raw"`; do j=`echo ${i} | sed 's/.raw//g'` ; convert -quality 100 ${i} ${j}.gif ;rm ${i} ; done
for i in `find . -name "*.RAW"`; do j=`echo ${i} | sed 's/.RAW//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.Raw"`; do j=`echo ${i} | sed 's/.Raw//g'` ; convert -quality 100 ${i} ${j}.gif ; rm ${i} ; done
for i in `find . -name "*.gif"`; do j=`echo ${i} | sed 's/.gif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.GIF"`; do j=`echo ${i} | sed 's/.GIF//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
for i in `find . -name "*.Gif"`; do j=`echo ${i} | sed 's/.Gif//g'` ; convert -quality 100 ${i} ${j}.png ; rm ${i} ; done
a co varianty bMP bMp iCO iCo atd?
tohle je hroznej bastl, pouzij outer loop a case insensitive search ...
-
V podstate spoleham na to ze tam nejsou (a nemeli by s nejvetsi pravdepodobnosti) stejne tak jako existuje mnoho dalsich formatu a typu, vypsal jsem ty nejpravdepodobnejsi. Jak to udelat insensitive case, to zatim nevim. Jak mas na mysi outer loop ?
-
Používat for x in `somecommand` by se celkově nemělo, výjimkou jsou wildcardy (for x in *.txt) kde to nerozděluje podle mezer ale podle souborů a řetězce co si píšu sám, takže vím jak vypadaj. Nepoužívání mezer pomůže ale rozhodně to není správné řešení. Mimo jiné je místo `.....` lepší používat $(.....), což (už) je také v POSIXu a umožňuje to vnořování a je celkově přehlednější. Co se skriptu týče, udělal bych to nějak takhle:
#!/bin/bash
# pokud mám argument, je to jméno soubru na zkonvertování
if [ $# -ge 1 ];then
# ${1%.*} usekne z prvního argumentu poslední tečku a cokoli za ní
# koncovku neznám kvůli case insensitive hledání
if convert "$1" "${1%.*}.png";then
rm "$1"
exit 0
else
exit 1
fi
fi
exts="gif ico tiff bmp"
dest=.
threads=4
for x in $exts;do
# -iname - case insensitive verze -name abych nemusel hledat všechny varianty
# nejsem si jistej jestli to je stadartní, nebo fičura GNU findu
find "$dest" -iname "*.$x" -print0 | xargs -0 -I{} -n1 -P$threads "$0" "{}"
# tu se zavolám se jménem souboru jako argumentem
done
-
jednim vrzem prohledavani vice pripon, pri nalezeni obrazek ihned prevadi a smaze ho jen pri uspesnem prevedeni:
find -regextype posix-extended -iregex '.*\.(bmp|gif|ico|pcx|raw|tif|tiff)' -exec sh -c 'convert -quality 100 ${1%} ${1%.*}.png && rm ${1}' _ {} \;
-
tak tak, silenost,
no nejprve je dobre sjednotit nazvy a nez delat key senzitiv match tak proste unifikovat koncovky treba na jen mala pismena
at zije rename
-
jen okrajova poznamka ke konverzi do png s -quality 100; to je IMHO blbost :o
u png je v tom cisle zakodovana komprese a filtr, defaultni je 75 (komprese 7 a filtr 5 =adaptivni). Ze zkusenosti nejmensi soubory byvaji u -quality 95, naopak to vase zavadejici -quality 100 dava soubory dokonce vetsi nez je defaultni nastaveni (bud -quality 75 nebo uplne bez -quality).
http://www.imagemagick.org/script/command-line-options.php#quality (http://www.imagemagick.org/script/command-line-options.php#quality)
kdo by chtel jeste mensi png, tak muze jeste vysledek pochroustat v optimpng, advpng nebo v pngzopfli, kdyz uz se to tlaci pres nejaky skript
-
Jak psal nobody, takto je to nejlepsi reseni vubec. Nejdriv PNG prevedu na BMP a pak vse na PNG, pro min. velikost QUALITY 95
find -regextype posix-extended -iregex '.*\.(png|PNG|Png)' -exec sh -c 'convert ${1%} ${1%.*}.gif && rm ${1}' _ {} \;
find -regextype posix-extended -iregex '.*\.(bmp|BMP|Bmp|tif|TIF|Tif|tiff|TIFF|Tiff|pcx|PCX|Pcx|ico|ICO|Ico|raw|RAW|Raw|gif|GIF|Gif)' -exec sh -c 'convert -quality 95 ${1%} ${1%.*}.png && rm ${1}' _ {} \;
Slo by to nejak pouzit k rozbaleni archivu, ktere se nachazeji vsude mozne ? V adresari, kde je archiv, se utvori slozka s nazvem archivu (bez pripony) a do ni se archiv rozbali a pak smaze. tar.gz je zvlastni - rozbali se primo na miste, tar.gz se smaze a nasledne .tar rozbali.
-
jen nejak nechapu ten prvni prevod vsech png do gif, to je proc? tim se snizi pocet barev na 256, coz mozna nechces
a v druhem kroku zase ten gif se predela do png?
archivy myslis jake? zip, tar.*? tar vetsinou miva uz v sobe jeden adresar a v nem vse ostatni (zdrojaky to tak maj), zip to nemiva
libovolnej komprimovanej tar muzes najednou rozbalit v jednom kroku pomoci tar xf tvujsoubor.tar.*
sam si najde dekompresor na gz, bz2, xz a nevim co jeste
-
Prevod do gif prave pro snizeni 16 777 216 barev na paletu libovolnych 256 barev, 216 barev z RGB vybere rogram, muze to byt i 256 stupnu sedi. Nevhodne pro fotky a pod. samozrejme. A pri konvertu do gif nesmi byt zapla dihertace (coz je prokladani vzoru aby to melo jakoze vic barev)
Jakim prikazem rozbalit archov vim (7z x nebo 7za x a nazev archivu). Slozky v archovu jou ruzne a nevim jake dopredu. proto to vytvoreni adresare snazvem archivu bez pripony. Seznam pripon archovu resim stejne jako u obrazku. Obecne pocet archivu je mnohem nizsi nez pocet obrazku.
-
Prevod do gif prave pro snizeni 16 777 216 barev na paletu libovolnych 256 barev, 216 barev z RGB vybere rogram, muze to byt i 256 stupnu sedi. Nevhodne pro fotky a pod. samozrejme. A pri konvertu do gif nesmi byt zapla dihertace (coz je prokladani vzoru aby to melo jakoze vic barev)
toto jde resit jenom convertem z png do png, bez mezistupne v gif: -depth 8 -type Palette
jinak na hromadny convert se ma pouzivat morgify, ze stejnyho balicku
Jakim prikazem rozbalit archov vim (7z x nebo 7za x a nazev archivu). Slozky v archovu jou ruzne a nevim jake dopredu. proto to vytvoreni adresare snazvem archivu bez pripony. Seznam pripon archovu resim stejne jako u obrazku. Obecne pocet archivu je mnohem nizsi nez pocet obrazku.
ja jen ze jsi chtel prvne dekomprimovat tar a pak az se zabyvat tim tarem, i kdyz to jde krasne jednim prikazem
-
find -regextype posix-extended -iregex '.*\.(png|PNG|Png)' -exec sh -c 'convert ${1%} ${1%.*}.gif && rm ${1}' _ {} \;
find -regextype posix-extended -iregex '.*\.(bmp|BMP|Bmp|tif|TIF|Tif|tiff|TIFF|Tiff|pcx|PCX|Pcx|ico|ICO|Ico|raw|RAW|Raw|gif|GIF|Gif)' -exec sh -c 'convert -quality 95 ${1%} ${1%.*}.png && rm ${1}' _ {} \;
jen detail ;) iregex je case insensitive, tedy regex kterej si nevsima velikosti pismen, viz manual pro find:
-iregex pattern
Like -regex, but the match is case insensitive.
takze opravdu staci pro vsechny kombinace, tedy nejen png,PNG,Png ale i pNG, pNg, pnG, PNg, PnG zadat pouze png...
find -regextype posix-extended -iregex '.*\.(png)' -exec sh -c 'convert ${1%} ${1%.*}.gif && rm ${1}' _ {} \;
find -regextype posix-extended -iregex '.*\.(bmp|tif|tiff|pcx|ico|raw|gif)' -exec sh -c 'convert -quality 95 ${1%} ${1%.*}.png && rm ${1}' _ {} \;
-
# pro nazev.tar.cokoliv vytvori adresar nazev (bez .tar.cokoliv) a rozbalit pomoci tar s uvedenim vystupniho adresare pomoci -C nazev
find -iname '*.tar.*' -exec sh -c 'mkdir ${1%.tar*}; tar xvf ${1%} -C ${1%.tar*} && rm ${1}' _ {} \;
# nebo pro nazev.tar.konkretni_pripony vytvori adresar nazev (bez .tar.pripona) a rozbalit pomoci tar s uvedenim vystupniho adresare pomoci -C nazev
find -regextype posix-extended -iregex '.*tar\.(bz2|gz|xz)' -exec sh -c 'mkdir ${1%.tar*}; tar xvf ${1%} -C ${1%.tar*} && rm ${1}' _ {} \;
# ostatni rozbalit pomoci 7z s uvedenim vystupniho adresare pomoci -onazev (odebrana (posledni) pripona, nutno zadat bez mezery za o, 7z sam neexistujici adresare vytvari)
find -regextype posix-extended -iregex '.*\.(arj|zip|rar)' -exec sh -c '7z x ${1%} -o${1%.*} && rm ${1}' _ {} \;
-
Diky
Takto to funguje mnohem rychleji a lip, navic neni problem s mezery.
Muj uplne prvni skript na toto (i na konvert obrazku) byl toto:
cd "${W}${WO}/"
for AU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/"
for BU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/"
for CU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/"
for XU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/"
for TU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/${TU}/"
for KU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/${TU}/${KU}/"
for LU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/${TU}/${KU}/${LU}/"
for MU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/${TU}/${KU}/${LU}/${MU}/"
for NU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/${TU}/${KU}/${LU}/${MU}/${NU}/"
for OU in `ls -d */ | tr -d "/"`; do
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/${TU}/${KU}/${LU}/${MU}/${NU}/${OU}/"
ls
cd "${W}${WO}/${AU}/${BU}/${CU}/${XU}/${TU}/${KU}/${LU}/${MU}/${NU}/${OU}/"
STRAAAASNE MOC PRIKAZU PRO RUZNE VARIANTY
HODNEKRAT DONE
Coz bylo casove nic moc, nez to projelo vsechny slozky. Navic mezera byla problem. U archivu jeste OK, ale u obrazku to znamenalo nekdy zacykleni a konvert v jede slozce parad dokola.
Diky za napad, vypocetni cas znacne ubyde.
-
Takže celkově pro konvert obrázků postačí toto ? Přez GIF tedy jít nemusím, ale rovnou do PNG hloubky 8 bit, pro minimální velikost quality 95.
Co se ale stane, když PNG je i původní obrázek ? To by byl i výsledek smazát, takže u formátu PNG se např přez GIF musí.
Výsldedek tedy takto:
find -regextype posix-extended -iregex '.*\.(png)' -exec sh -c 'convert ${1%} ${1%.*}.gif && rm ${1}' _ {} \;
find -regextype posix-extended -iregex '.*\.(bmp|tif|tiff|pcx|ico|raw|gif)' -exec sh -c 'convert -quality 95 -depth 8 -type Palette ${1%} ${1%.*}.png && rm ${1}' _ {} \;
-
Nobody
# pro nazev.tar.cokoliv vytvori adresar nazev (bez .tar.cokoliv) a rozbalit pomoci tar s uvedenim vystupniho adresare pomoci -C nazev
find -iname '*.tar.*' -exec sh -c 'mkdir ${1%.tar*}; tar xvf ${1%} -C ${1%.tar*} && rm ${1}' _ {} \;
U souboru Soubor.tar.neco vytvori v miste slozku Soubor/ a obsah taru rozbali do nej ?
find -iname '*.tar.*' -exec sh -c 'mkdir ${1%.tar*}; tar xvf ${1%} -C ${1%.tar*} && rm ${1}' _ {} \;
Ostatni archivy, ktere mohou obsahovat vice souboru i adresaru takto:
find -regextype posix-extended -iregex '.*\.(arj|zip|rar|bz2|bz|z|bzip|bzip2|7z|jar)' -exec sh -c '7z x ${1%} -o${1%.*} && rm ${1}' _ {} \;
U gzip (ne tar.gz), kde je jen jeden soubor v archivu rozbbalim archiv takto (primo v miste, kde se nachazi, slozku nevytvarima archiv smazu)?
find -regextype posix-extended -iregex '.*\.(gz)' -exec sh -c '7z x ${1%} && rm ${1}' _ {} \;
## Nebo
find -regextype posix-extended -iregex '.*\.(gz)' | xargs gunzip -d
## Pricemz by se mel *.gz smazat, nebo se prida jeste:
find -regextype posix-extended -iregex '.*\.(gz)' | xargs rm
-
Co se ale stane, když PNG je i původní obrázek ? To by byl i výsledek smazát, takže u formátu PNG se např přez GIF musí.
ne, nemusis jit pres gif, muzes udelat treba toto:
find -regextype posix-extended -iregex '.*\.(png)' -exec sh -c 'convert ${1%} -depth 8 -type Palette -quality 95 /tmp/tmp.png && mv /tmp/tmp.png ${1}' _ {} \;
vyhoda je, ze treba pruhlednost zustane a vyhnes se gifu
no nevim, ceho chces jako dosahnout a proc redukujes tu paletu? jen aby ty soubory byly mensi?
pak treba zrovna ten zopflipng jednak vic komprimuje a jeste pritom umi redukci palety a neviditelnych casti (pustit po konverzi vseho do png)
... zopflipng -m --lossy_8bit --lossy_transparent ${1%} /tmp/tmp.png ...
jenom ten zopfli algoritmus je pomaly, takze velke --iterations a -m je pomale (muzes vynechat) a jestli i tak bude pomale, tak pridat -q
-
U souboru Soubor.tar.neco vytvori v miste slozku Soubor/ a obsah taru rozbali do nej ?
jezkovy, tak si to treba zkus, ne? :o
U gzip (ne tar.gz), kde je jen jeden soubor v archivu rozbbalim archiv takto (primo v miste, kde se nachazi, slozku nevytvarima archiv smazu)?
no a proc gz neudelas stejne jako ostatni jednousoborove komprese bz2, xz, lzma, rzip? jestli nechces podadresar, tak proste vynech -o za 7z