Fórum Ubuntu CZ/SK
Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: Uran 13 Června 2011, 13:28:19
-
Mam symlinky na knihy, ktere chci precist a pro prevod na cteni ve ctece pouzivam tento jednoduchy skript. Nejde nejak osetrit/zapracovat podminku, aby se nekopirovaly uz jednou zkopirovane soubory (symlinky postupne doplnuji, pripadne mazu)?
#!/bin/bash
cp -HLr ~/Knihy/Precist/ ~/Knihy/konverze/
find ~/Knihy/konverze/ -type f -iregex '.*\(doc\|rtf\)' | while read F
do if [ -e "${F%.*}.txt" ]
then rm "$F"
else catdoc -w "$F" | cstocs -i utf8 1250 > "${F%.*}.txt"
rm "$F"
fi
done
ve slozce ~/Knihy/Precist/ mam symlinky
S tim take souvisi druhy dotaz. Pouzivam na prevod do txt programy antiword a catdoc.
Nejde podobne pouzit openoffice v prikazove radce na prevod z doc -> odt? Potrebuji zachovat formatovani nehlede na to, ze programy nezvladnou soubory ulozene s volbou fastsaved a nekdy na vystupu generuji nekolik stranek divnych paznaku (vyjimecne, nejde o zmrseny text, ale neco navic k samotnemu textu).
-
Tak jsem to nejak zbastlil. Budu vsak vdecny za rady jak to monstrum zjednodusit.
Pouzivam utilitu "unoconv" je v repozitarich Ubuntu. Pouziva openoffice -> skript funguje jen v emulatoru terminalu (vyzaduje spusteny x server). Lze vsak pouzit napr. catdoc nebo antiword a pak to jde bez spusteneho X serveru.
Po skriptu pozaduji aby synchronizoval slozku obsahujici symlinky na e-knihy (link) a slozku s e-knihami (vys). doplneni novych knih na zaklade novych symlinku, mazani knih na zaklade smazanych symlinku. Krome synchronizace provadim u doc a rtf souboru prevod do txt.
Skript ma ctyri casti tvorene cykly:
#!/bin/bash
find ~/Prechodne/link/ -type f -follow -iregex '.*\(doc\|rtf\)' | while read F #najde symlinky
do if [ -e "`echo "${F%.*}.txt" | sed 's#link#vys#'`" ] #otestuje zda neni cilovy soubor uz pritomen ve slozce "vys" pritomen
then echo 1 > /dev/null
else echo "Konverze "$F""
mkdir -p "`echo "${F%/*}" | sed 's#link#vys#'`" #vytvoreni adresarove struktury. nepodarilo se mi presvedcit aby cp vytvorilo i slozky
cp -HLr "$F" "`echo "$F" | sed 's#link#vys#'`" #kopirovani souboru do slozky "vys"
unoconv -f txt "`echo "$F" | sed 's#link#vys#'`" #konverze souboru doc a rtf do txt
rm "`echo "$F" | sed 's#link#vys#'`" #odstraneni souboru doc a rtf ze slozky "vys"
fi
done
#kopirovani vsech ostatnich souboru (mimo doc a rtf) do slozky "vys"
find ~/Prechodne/link -type f -follow ! -iregex '.*\(doc\|rtf\)' | while read F
do if [ -e "`echo "$F" | sed 's#link#vys#'`" ]
then echo 2 > /dev/null
else echo "Kopiruji "$F""
mkdir -p "`echo "${F%/*}" | sed 's#link#vys#'`"
cp -HLr "$F" "`echo "$F" | sed 's#link#vys#'`"
fi
done
find ~/Prechodne/vys/ -type f | while read F
do if [ ! -e "`echo "${F%.*}" | sed 's#vys#link#'`"* ] #urceni zda slouka "vys" neobsahuje soubory, ktere uz ve slozce "link" neexistuji
then echo "Mazu osirele "$F""
rm -rf "${F%.*}"*; fi
done
#mazani prazdnych slozek
find ~/Prechodne/vys/ -empty | while read F
do echo "Mazu prazdne "$F""
rm -rf "$F"
done