Utilice pdfinfo en varios archivos PDF y luego extraiga el nombre del archivo y el número de páginas

Utilice pdfinfo en varios archivos PDF y luego extraiga el nombre del archivo y el número de páginas

Tengo directorios (y subdirectorios) con varios miles de archivos PDF y estaba tratando de reunir el total de páginas de todos esos archivos PDF. Entonces intento ejecutar este comando:

find . -name \*.pdf -exec pdfinfo {} \; | grep Pages > filelist

Y obtengo el número de páginas de cada archivo canalizado al filelistarchivo.

Realmente me gustaría incluir también el nombre del archivo, pero no sé cómo hacerlo ( pdfinfodevuelve muchos datos sobre el PDF pero no el nombre del archivo en sí).

Respuesta1

Precede -execcon -print. De esta manera, el nombre de la ruta se imprimirá findantes de que el respectivo pdfinfoimprima su salida. -printes la acción predeterminada (por ejemplo, cuando ejecuta sole find .), pero la presencia de -execsuprime la acción predeterminada.

Si prefiere el nombre de la ruta después de la salida del respectivo pdfinfoentonces puede intentarlo -exec … -print, pero en este caso la nota -printse realizará si -exec(es decir pdfinfo) tiene éxito. En general se utiliza -exec … -printcuando -execse utiliza como prueba. En el contexto de su pregunta, personalmente prefiero primero el nombre de la ruta, entonces -print -exec ….

Entonces necesitas ajustar tu grep. Utilice el hecho de que cada nombre de ruta considerado por find .debe comenzar con .. grep -E '^(\.|Pages)'coincide con líneas con un punto literal al principio o la cadena Pagesal principio.

El comando final será:

find . -name \*.pdf -print -exec pdfinfo {} \; | grep -E '^(\.|Pages)'

(redirija la salida por su cuenta).

Considere -type fcomo primera prueba en caso de alguna irregularidad.archivocoincidencias -name \*.pdfpor casualidad. Esto evitará llamar pdfinfoa directorios y demás.

información relacionada