batch renombra archivos pdf por contenido

0

Tengo una gran pila de archivos PDF y me gustaría cambiarles el nombre por contenido. (Todos son buscables). Y me gustaría hacerlo utilizando la interfaz de línea de comandos.

Todos son hojas sueltas, por lo que tienen una forma constante, y me gustaría cambiar el nombre por fecha.

Actualmente se llaman: payslip100 .. payslip308

La cadena para cambiar el nombre sería el componente de 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 de trabajo final en una respuesta.

    
pregunta watermelon 20.07.2016 - 11:36

1 respuesta

1

¡Después de algunos esfuerzos he llegado a un resultado útil! La sintaxis sed es bastante confusa y estoy muy feliz de existir en un estado en el que funciona sin saber 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:\ *\(.*\)-\(.*\)-\(.*\),--\payslip---.pdf,')
    echo mv "$file" "$new"
done

Utilicé pdfgrep que se instaló usando homebrew (se encuentra en otra respuesta que no puedo encontrar ahora).

Necesitaba cambiar "/" para el nombre del archivo. El uso de la barra inclinada hacia adelante como sintaxis sed no es necesario, y puede ser reemplazado por otros caracteres. Por lo tanto, utilizando "," en lugar de "/" <

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

Agregué el año y el mes al inicio del nombre de archivo para fines de organización.

    
respondido por el watermelon 22.07.2016 - 06:22

Lea otras preguntas en las etiquetas