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"
1 comentario:
Sencillo en su claridad, majestuoso en su integración y utilidad. Gracias
Publicar un comentario