batch rinomina i file pdf per contenuto

0

Ho una grande pila di pdf e vorrei rinominarli per contenuto. (Sono tutti ricercabili). E mi piacerebbe farlo utilizzando l'interfaccia a riga di comando.

Sono tutti buste paga, quindi hanno una forma costante e mi piacerebbe rinominare per data.

Attualmente sono denominati: payslip100 .. payslip308

La stringa per la ridenominazione sarebbe il componente della data in Payment Date: 15/4/2016

Ho installato pdfgrep usando home-brew e sto cercando usando pdfgrep -HC 15 "Payment Date:" paySlip.pdf

che restituisce paySlip.pdf:Payment Date: 8/7/2016

Ho allegato il mio codice di lavoro finale in una risposta.

    
posta watermelon 20.07.2016 - 11:36
fonte

1 risposta

1

Dopo alcuni sforzi sono giunto a un risultato utile !! la sintassi sed è abbastanza confusa e sono abbastanza felice di esistere in uno stato in cui funziona senza sapere perché.

#!/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

Ho usato pdfgrep che è stato installato usando homebrew (trovato su un'altra risposta che non riesco a trovare adesso).

Ho dovuto cambiare "/" per il nome del file. L'uso della barra diretta come sintassi di sed non è necessario e può essere sostituito da altri caratteri. Quindi usando "," invece di "/" link

Ho trovato che c'erano spazi variabili in $ date che richiedevano ..Payment Date:\ *\...

Ho aggiunto anno e mese all'inizio del nome del file per scopi organizzativi.

    
risposta data 22.07.2016 - 06:22
fonte

Leggi altre domande sui tag