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: prevod doc do txt/odt cli  (Přečteno 2021 krát)

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
prevod doc do txt/odt cli
« kdy: 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)?
Kód: [Vybrat]
#!/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).
"Pouze text v MS Wordu je opravdu čistý, příteli."

Uran

  • Aktivní člen
  • *
  • Příspěvků: 341
Re: prevod doc do txt/odt cli
« Odpověď #1 kdy: 14 Června 2011, 12:41:26 »
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:

Kód: [Vybrat]
#!/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

"Pouze text v MS Wordu je opravdu čistý, příteli."

 

Provoz zaštiťuje spolek OpenAlt.