Aquí dejo un script para convertir una biblioteca de libros-e al formato epub (o al que se quiera).
La idea base es que puedo partir de una biblioteca organizada con subdirectorios y convertir todos los libros-e al formato deseado sin alterar la estructura y guardando copia de los originales en una estructura nueva copiada de la antigua.
Para casos más sencillo basta con ebook-convert del que este script es tan solo un ‘wrapper’.
#!/bin/bash # # libros-e_convierte.sh # Por Guimi 2013/01 - http://www.guimi.net # ############ # REQUISITOS # calibre -> ebook-convert # Extensiones a convertir #extensiones="pdf epub txt png jpg jpeg bmp doc docx djvu" extensiones="rtf lit fb2 mobi" # Contadores estadísticos contador_total=0 contador_ok=0 contador_no=0 # Tomamos el directorio inicial, ya que trabajaremos con subdirectorios directorio_base=$(pwd) # Generamos un directorio donde guardar los originales. # Este directorio está fuera de nuestra ruta, así podemos ejecutar repetidas veces el script sin volver a convertir los archivos mkdir ../originales # Listamos los ficheros, incluidos subdirectorios for x in `find . -type f | sort` do # Incrementamos contador estadístico let contador_total=contador_total+1 # Primero hemos de tomar el directorio, el nombre y la extensión directorio=$(dirname "$x") nombre_base=$(basename "$x") extension="${nombre_base##*.}" nombre_base="${nombre_base%.*}" #echo "$directorio | $nombre_base | $extension" # Comprobamos si la extensión del fichero es una de las buscadas [[ $extensiones =~ $extension ]] && reconocido=0 || reconocido=1 # Convertimos el fichero if [ $reconocido -eq 0 ] then echo -n "Convirtiendo $x..." # Cambiamos al directorio del fichero, si no ebook-convert no trabaja bien (!?) cd $directorio # Hacemos una conversión silenciosa y tomamos la salida (ejecución terminada con éxito o con error) ebook-convert $nombre_base.$extension $nombre_base.epub > /dev/null 2> /dev/null SALIDA=$? # Volvemos al directorio de trabajo cd $directorio_base # Comprobamos si la conversión ha sido exitosa if [ "$SALIDA" -gt 0 ] then # Incrementamos contador estadístico let contador_no=contador_no+1 echo " ERROR!!!" else # Incrementamos contador estadístico let contador_ok=contador_ok+1 echo " ok" # Generamos el mismo arbol de directorios para lo originales y movemos el archivo mkdir ../originales/$directorio -p 2> /dev/null mv $directorio/$nombre_base.$extension ../originales/$directorio/$nombre_base.$extension fi fi done # Mostramos unas pequeñas estadísticas echo "" echo "Total ficheros: $contador_total | Convertidos: $contador_ok | Con error: $contador_no" # Terminamos exit 0
Category: Programación, Prompt