Nichtssagende *.pdf Dateinamen automatisch umbenennen

Gast #5069565
Lesenswert?

Danke st, Danke ti, Danke *, für die vielen nichtssagende *.pdf 
Dateinamen
in meinem Downloadverzeichnis!
1
for f in *.pdf; do 
2
  ln -s $f "`pdfinfo $f|grep Title:|cut -c 17-|sed -e 's/\//_/g' -e 's/ /_/g'`".pdf
3
done
hilft etwas.

Aus z.B.
en.DM00051352.pdf
wird
STM32F0xxx_Cortex-M0_programming_manual.pdf

Wird manchmal etwas länglich..

Die Versionsnummer müsste eigentlich auch noch irgendwie in den 
Dateinamen. (IMO)

(kein pdfinfo?: "apt install poppler-utils" hilft)

Ich bitte um Verbesserungsvorschläge..
Gast #5069679
Lesenswert?

Kann Mann mit:

pdftk "%~1" dump_data output ...

und

awk "/InfoKey: Title/{getline;print("\"%name%\"\"\t\""substr($0,12))}" 
...

auch mit Windoof haben.

Den Rest soll sich jeder selbst ergaenzen.
Das Quoting ist wie immer etwas knifflig.
Gast #5069708
Lesenswert?

Robust gegen whitespace u.a. in bereits vorliegenden Dateinamen:
1
 ls -1d *.pdf | while read f
2
 do
3
     ln -s "$f" "$(pdfinfo ""$f"" | grep -oP '(?<=Title:\s{10}).*$' | sed -e 's!/!_!g' -e 's/ /_/g')".pdf
4
 done


> Ich bitte um Verbesserungsvorschläge..

wellcome to the shells quoting hell ;-)

grep -da schon mal angeworfen- kann mehr für mich tun

Bei sed substitute Operation ist '/' nicht zwingend als 
Trennzeichen: geht es darum '/' zu bearbeiten so vermeidet ein anderes 
Trennzeichen das escapen .


tr als Alternative zu sed :
1
ls -1d *.pdf | while read f
2
do
3
     ln -s "$f" "$(pdfinfo ""$f"" | grep -oP '(?<=Title:\s{10}).*$' | tr '[:blank:]/' '_' )".pdf
4
done

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren