kinkerlitzchen
Goto Top

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

gelöstFrageLinux
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-ID: 226877

Url: https://administrator.de/forum/nummerierte-dateien-suchen-und-dazu-symlinks-jpg-erstellen-226877.html

Ausgedruckt am: 17.04.2025 um 20:04 Uhr

colinardo
colinardo 17.01.2014 aktualisiert um 10:01:35 Uhr
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
Kinkerlitzchen
Kinkerlitzchen 17.01.2014 um 19:22:17 Uhr
Goto Top
Danke dir! Auch für die Links face-smile