0 votos

renombrar archivos pdf por lotes por contenido

Tengo una gran pila de pdf's y me gustaría renombrarlos por lotes según su contenido. (Todos ellos se pueden buscar). Y me gustaría hacerlo utilizando la interfaz de línea de comandos.

Son todas nóminas por lo que tienen una forma constante, y me gustaría renombrar por fecha.

Actualmente se denominan: nómina100 .. nómina308

La cadena para renombrar sería el componente de la fecha en Payment Date: 15/4/2016

He instalado pdfgrep usando home-brew y estoy buscando usando pdfgrep -HC 15 "Payment Date:" paySlip.pdf

que devuelve paySlip.pdf:Payment Date: 8/7/2016


He adjuntado mi código final de trabajo en una respuesta.

0 votos

¿Cómo se realiza la búsqueda en los PDF?

0 votos

Acabo de darme cuenta de que puedo buscar el contenido del pdf usando mdfind, que me dará la lista de archivos que contienen una cadena determinada. mdfind annual -onlyin ./ Pero grep no arrojará ningún resultado de la misma búsqueda. grep annual *.*

0 votos

Así que, por favor, actualice su pregunta con el comando que ejecuta y sus resultados para un número de archivos. Entonces podemos añadir comandos para renombrar los archivos.

1voto

watermelon Puntos 16

¡¡Después de algunos esfuerzos he llegado a un resultado útil !! La sintaxis de la red es bastante confusa y estoy bastante contento de existir en un estado en el que funciona sin saber muy bien por qué.

#!/bin/bash
for file in *.pdf
do
    # return file name and date in form "Payment Date:   8/7/2016"
    date=$(pdfgrep -C 15 "Payment Date:" "$file")
    echo $date

    # now replace / with - to make naming file easier
    date2=$(echo "$date" | sed 's,/,-,g')
    echo $date2

    # use date string to rename : YYYY-mm-payslip-dd-mm-YYYY.pdf
    new=$(echo "$date2" | sed 's,\Payment Date:\ *\(.*\)-\(.*\)-\(.*\),\3-\2-\payslip-\1-\2-\3.pdf,')
    echo mv "$file" "$new"
done

Usé pdfgrep que fue instalado usando homebrew (encontrado en otra respuesta que no puedo encontrar ahora mismo).

Necesitaba cambiar "/" por el nombre del archivo. El uso de la barra oblicua como sintaxis de sed no es necesario, y puede ser sustituido por otros caracteres. Por lo tanto, el uso de "," en lugar de "/" https://stackoverflow.com/questions/17379293/replace-forward-slash-with-double-backslash-enclosed-in-double-quotes

Encontré que había espacios variables en $date lo que hizo necesario el ..Payment Date:\ *\...

He añadido el año y el mes al principio del nombre del archivo para organizarlo.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X