kinkerlitzchen
Goto Top

Nummerierte Dateien suchen und dazu Symlinks (.jpg) erstellen.

Achtung! Amateur sucht Hilfe..

Ich möchte per bash mit jpg-symlinks von allen .dat Dateien auf eine zugehörige .jpg datei im Ordner verweisen, damit zu jeder Datei das ein zugehörige Bild angezeigt wird.

Ziel ist, zu jeder .dat einen gleichnamigen symlink .jpg zu erzeugen, der auf die .jpg ohne Nummerierung verweist. Ich möchte also einen Ordner nach gleichnamigen Dateien, die sich nur durch Nummerierung unterscheiden, durchsuchen. Zu diesen will ich dann gleichnamige symlinks erzeugen.

Szenario: Alle Dateien sind in einem Ordner

List1.jpg
List1-001.dat
List1-002.dat
List1-003.dat
List1-004.dat
List1-004.dat
List1-004.dat

List2.jpg
List2-001.dat
List2-002.dat
List2-003.dat
List2-004.dat

Ziel:

List1.jpg
List1-001.dat
List1-001.jpg (symlink)
List1-002.dat
List1-002.jpg (symlink)
List1-003.dat
List1-003.jpg (symlink)
List1-004.dat
List1-004.jpg (symlink)
List1-005.dat
List1-005.jpg (symlink)

List2.jpg
List2-001.dat
List2-001.jpg (symlink)
List2-002.dat
List2-002.jpg (symlink)
List2-003.dat
List2-003.jpg (symlink)
List2-004.dat
List2-004.jpg (symlink)

Bisher mache ich das ganz dumpf, indem ich einfach per bash eine Folge symlinks erstelle.

ln -s "$path/$file.jpg" "$path/$file-001.jpg"
ln -s "$path/$file.jpg" "$path/$file-002.jpg"
ln -s "$path/$file.jpg" "$path/$file-003.jpg"
ln -s "$path/$file.jpg" "$path/$file-004.jpg"
...

Das ist natürlich Schrott. Je nach Anzahl der Dateien erzeuge ich unnötig viele oder zu wenige symlinks. Davon abgesehen entsteht ein langes Script, obwohl es nicht viel tut..

Allerdings weiß ich nicht, wie man nach einem variablen Filename sucht..

Könnt ihr mir sagen, was ich tun muss?

Content-Key: 226877

Url: https://administrator.de/contentid/226877

Printed on: April 25, 2024 at 02:04 o'clock

Member: colinardo
colinardo Jan 17, 2014 updated at 09:01:35 (UTC)
Goto Top
Hallo Kinkerlitzchen,
könntest du mit einer FOR-Schleife machen die alle *.dat-Files mit entsprechender Formatierung durchläuft:
#!/bin/bash
path="/dein/pfad"  
for x in `ls -1 $path/List*-???.dat`;do 
	image=${x%-*}.jpg
	ln -sf "$image" "${x%.*}.jpg"  
done
Wie Bash-Stringmanipulationen funktionieren kannst du hier nachlesen. Und wie man mit ls und WildCards Dateien auflistet hier.

Grüße Uwe face-smile
Member: Kinkerlitzchen
Kinkerlitzchen Jan 17, 2014 at 18:22:17 (UTC)
Goto Top
Danke dir! Auch für die Links face-smile