ubuntuusers.de

ghost-shell-script

Status: Gelöst | Ubuntu-Version: Kubuntu 14.04 (Trusty Tahr)
Antworten |

bremer

Anmeldungsdatum:
13. August 2006

Beiträge: 437

hi, ich habe in einem verzeichnis mehrere pdfs, die ich zu einem zusammenfassen möchte. mit PDFtk kein Problem - nur muss ich diese zuvor mit folgendem befehl entsperren:

1
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=1.pdf -c .setpdfwrite -f VorhandeneDatei1.pdf

wie kann ich diesen befehl am einfachsten so automatisieren, dass entw. das ursprungsdatum (wäre mir lieber) oder der ursprungsname erhalten bleibt?

danke iV für jd. hilfreichen hinweis!

lg

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

1
2
3
touch -r VorhandeneDatei1.pdf zeitstempel
gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=1.pdf -c .setpdfwrite -f VorhandeneDatei1.pdf
touch -r zeitstempel VorhandeneDatei1.pdf

Da ich das gs-Programm nicht recherchieren wollte habe ich diesen Befehl gelassen wie er ist.

1
2
3
4
5
touch --help
# oder 
info touch 
# oder 
man touch

sollten den Touchbefehl erklären

bremer

(Themenstarter)

Anmeldungsdatum:
13. August 2006

Beiträge: 437

ok danke, um es zu automatisieren habe ich es mit folgendem script aufgerufen:

1
2
3
4
5
#!/bin/bash 

for f in `ls *.pdf`; 
  do gs -o ./output/$f -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -c .setpdfwrite -f  $f 
done 

wie bringe ich da touch unter?

[edit] habe es mit mod_date geschafft:

1
2
3
4
5
6
7
8
#!/bin/bash 

for i in *.pdf
  do 
  mod_date=$(stat --format %y "$i"|awk '{print $1"_"$2}'|cut -f1 -d'.'|sed 's/[: -]//g')
   mv "$i"  "$mod_date".pdf
 gs -o ./out/"$mod_date".pdf -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -c .setpdfwrite -f  "$mod_date".pdf
done 

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17620

Wohnort: Berlin

bremer schrieb:

ok danke, um es zu automatisieren habe ich es mit folgendem script aufgerufen:

1
2
3
4
5
#!/bin/bash 

for f in `ls *.pdf`; 
  do gs -o ./output/$f -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -c .setpdfwrite -f  $f 
done 

wie bringe ich da touch unter?

1
2
3
4
5
6
for f in *.pdf
  touch -r "$f" zeitstempel
  do gs -o ./output/$f -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -c .setpdfwrite -f  $f
  touch -r zeitstempel "$f" 
done 
rm zeitstempel 

Also erst den Zeitstempel auf die Dateizeit setzen, die Datei mit gs manipulieren, und dann die Dateizeit wieder auf den Zeitstempel zurücksetzen.

Wie Du im 2. Kommando besser ohne ls arbeitest hast Du ja selbst vorgeführt.

Die Datei Zeitstempel dient nur dazu die Zeit zwischenzeitlich aufzusparen und kann am Ende gelöscht werden. Wenn sie bereits existiert schadet es nicht - existiert sie noch nicht wird sie angelegt.

Das Semikolon am Zeilenende ist überflüssig. Nur wenn Du in der gleichen Zeile weiterschreibst mit dem zweiten, dritten Befehl - dann brauchst Du zur Abgrenzung eins.

Antworten |