Resulta que en mi trabajo nos es necesario obtener un reporte con el numero de paginas de infinidad de archivos .pdf, por ello me di a la tarea de buscar algo que me resolviera el problema, sin embargo no hay una aplicación que propiamente lo haga y ademas haga una búsqueda recursiva de los archivos en distintas carpetas.
Pongo como referencia el siguiente vinculo ya que de ahí saque una pequeña parte del script:
http://www.hermann-uwe.de/blog/counting-pages-in-multiple-pdfs-from-the-command-line-using-pdfinfo-or-pdftk
Espero que a alguno le sirva. Se aceptan comentarios. =P
Pongo como referencia el siguiente vinculo ya que de ahí saque una pequeña parte del script:
http://www.hermann-uwe.de/blog/counting-pages-in-multiple-pdfs-from-the-command-line-using-pdfinfo-or-pdftk
Espero que a alguno le sirva. Se aceptan comentarios. =P
#!/bin/bash
##################################### # # # Contar hojas de archivos pdf # # en distintas carpetas # # # # Arturo Jimenez # # arturo.jimenez.26@gmail.com # # # # Version 1 [26 Junio 2013] # # # ##################################### #limpia pantalla clear ####################################### # Verificacion de usuario root # ####################################### if [ "$(whoami)" != 'root' ]; then echo "Es necesario ejecutar este script como root." exit 1; fi ####################################### # Se revisa que no existan los # # archivos que usa el script # # en caso de haberlos los elimina # ####################################### if [ -f list_pdfs ] then rm list_pdfs fi if [ -f repfinal ] then rm repfinal fi ####################################### # Se le pide la ruta de ejecucion # # al usuario # ####################################### # Se obtiene ruta actual r_actual=`pwd`/ # Pregunta al usuario echo -n "Desea ejecutar el script en la ruta actual $r_actual [s/n]:" read answ # Validacion respuesta while [[ "$answ" != "s" && "$answ" != "n" ]]; do echo "No ingreso una respuesta valida" echo -n "Desea ejecutar el script en la ruta actual $r_actual [s/n]:" read answ done # En caso de no, ¿Donde se va a ejecutar? if [ "$answ" == "n" ]; then echo -n "Escriba la ruta donde desea ejecutar el script: " read media rt=0 # Valida que la ruta que ingreso el usuario exista while [ $rt -eq 0 ]; do if [ -d "$media" ]; then echo "El directorio es valido" rt=1 else echo "No ingreso una ruta valida" echo -n "Escriba la ruta donde desea ejecutar el script: " read media fi done echo -e "La ruta seleccionada es: $media\n" else media=$r_actual echo -e "La ruta seleccionada es: $media\n" fi ####################################### # Con find examinamos la ruta y se # # genera un archivo con la lista de # # PDF's a procesar # ####################################### find "$media" -name *.pdf > list_pdfs ####################################### # Se determina el numero de archivos # # a procesar # ####################################### largo=`wc -l list_pdfs | cut -d " " -f 1` ####################################### # Con date se obtiene la hora en seg # # para despues tener el tiempo de # # ejecucion del comando # ####################################### fecha1=`date +%s` ####################################### # Inicia el conteo de los PDF's # # mediante un while donde se esta # # procesando linea por linea las # # rutas generadas por find # ####################################### i=1 while (test ${i} -le ${largo}); do f=`sed -n "$i"p list_pdfs` #se obtiene una linea solamente directorio=$(dirname "$f") #se obtiene ruta archivo=$(basename "$f") #se obtiene archivo echo -n "${directorio}| " >> repfinal #se escribe la ruta del pdf en el reporte echo -n "${archivo}| " >> repfinal #se escribe el nombre del archivo var=`pdfinfo "$f" 2>/dev/null | grep Pages | cut -d ":" -f 2` #se obtiene el numero de páginas echo $var >> repfinal #se escribe el numero de paginas junto a la ruta i=`expr $i + 1` done echo -e "\ntotal de pdf procesados: $largo" >> repfinal echo -e "total de pdf encontrados: $largo \n" echo -e "Se genero el reporte llamado:\n repfinal\n" ####################################### # Se obtiene la segunda fecha y # # se hace una resta para obtener # # el tiempo de ejecucion en segundos # ####################################### fecha2=`date +%s` tiempo=`expr $fecha2 - $fecha1` echo -e "El tiempo de ejecucion del comando fue de $tiempo segundos"