ubuntuusers.de

dublex scan rename script

Status: Gelöst | Ubuntu-Version: Ubuntu 12.04 (Precise Pangolin)
Antworten |

Krümelomat

Avatar von Krümelomat

Anmeldungsdatum:
18. Oktober 2010

Beiträge: 1154

IMG_0104.JPG --> 001.jpg
IMG_0107.JPG --> 002.jpg
.....
IMG_0109.JPG --> 008.jpg

j=1; for i in *.*; do mv $i $(printf "%03d" $j).jpg; ((j++)); done
02 04 06...
j=2; for i in {04..12}; do echo $i $(printf "%03d" $j); ((j++)); ((j++)); done
04 002
05 004
06 006
07 008
08 010
09 012
10 014
11 016
12 018

Fertig:

j=2; for i in {004..012}; do mv $i.jpg $(printf "%03d" $j); ((j++)); ((j++)); done

oder aber gleich scannen:

j=2 for i in {001..100}; do scanimage --mode gray --resolution 300 -x 210 -y 297  | convert -  -threshold 80% $j.pbm; echo $j; ((j++)); ((j++)); read -p "Press Enter"; done

Acer54

Avatar von Acer54

Anmeldungsdatum:
6. Juli 2011

Beiträge: 700

Wohnort: Bayern

sorry, ich bin jetzt nicht soooo der Bash-Superstar.

Aber könntest du zumindest mehr als 2 Sätze zu deinen Codeschnipseln sagen ?

Hast du eine Frage dazu, oder möchtest du das Forum einfach als privates Archiv nutzen ? Oder willst du anderen Nutzern deinen Erfahrungen zur Verfügung stellen ?

Ich steh glaub ich auf der Leitung.

Krümelomat

(Themenstarter)
Avatar von Krümelomat

Anmeldungsdatum:
18. Oktober 2010

Beiträge: 1154

Hi @Acer, du hast richtig geraten, diesmal um anderen Nutzern zu helfen.

Schön kurz:

for i in {004..012..2}; do echo $i; done

Wenn du eine Erklärung haben willst dann sag ich dir, dass:

for; command; done

, eine Forschleife, die Anzahl an Wiederholungen des Kommandos festlegt. Z.B.

for ((x=1; x<5; x++)); do echo hi; done

macht dass dich das Terminalfenster 4x begrüßt. Du kannst auch einen Parameter übergeben:

for i in 1 2 3 Auto; do echo $i hi; done

, jetzt wendet sich das Terminalfester 3x an dich und einmal an dein Auto. Wenn du als Parameter Dateien übergibst, dann übergibt er die Dateinamen. Die Brace Extention {01..04} zählt die logische Abfolge von Zahlen oder Buchstaben im angegebenen Bereich auf. Dies kann als Parameterübergabe genutzt werden. Die Formatierung %03d gibt heisst %=Formatierung 0=Auffüllen von Nullen 3=3 Nullen d=digit du könntest auch i für Integer nehmen. Diese Formatierung kann z.B. "printf" und "convert" benutzen. Um einen kurzen Überblick über die verwendeten Programme zu bekommen kann man z.B.

man mv

ins Terminal eingeben. Das Ganze wird möglich durch das Programm Bash, das man 7mb groß runterladen kann, ist aber in Ubuntu schon mit drin.

Antworten |