Programmieren - alles kontrollieren 4.935 Themen, 20.621 Beiträge

Dateiliste zu Ordnernamen

neelixx / 16 Antworten / Flachansicht Nickles

Hallo,

ich habe einen Haufen an Dateien in einem Ordner, genau genommen 623 Bilddateien und 623 dazu passende PDF-Dateien. Da mir das ganze aber "etwas" unübersichtlich geworden ist, würde ich nun gerne eine Dateiliste erstellen, und anhand dieser Liste eine Ordnerstruktur aufbauen und die entsprechenden Dateien dahinein kopieren lassen.

Beispiel:

1.png
1.pdf
2.png
2.pdf
3.png
3.pdf

Nun würde ich zuerst eine Dateiliste erstellen, die alle *.pdf enthält und davon würde ich dann gerne eine Ordnerstruktur haben, also:

{Ordner 1}
{Ordner 2}
{Ordner 3}

jeweils den Dateinamen des PDFs, aber ohne die Erweiterung.
Anschließend sollte nun noch folgendes passieren, das eben die Dateien

1.png
1.pdf

in den Ordner

{Ordner 1}

kopiert werden.

Ist so etwas möglich? Und wenn ja, wie realisiere ich das?

bei Antwort benachrichtigen
REPI neelixx „Dateiliste zu Ordnernamen“
Optionen

Als kleines Bash Script (Linux) könnte man diese folgeneermaßen schnell realisieren!

#!/bin/sh
sourcedir="quelle"
targetdir="ziel"
ls -l ~/$sourcedir/*.pdf > ~/zzahl.$$
zeilenzahl=$(cat -n ~/zzahl.$$ |tail -n1 | awk '{print $1}')
zahl=1
while [ $zahl -le $zeilenzahl ]; do
mkdir ~/$targetdir/ordner$zahl
cp ~/$sourcedir/$zahl.pdf ~/$targetdir/ordner$zahl/$zahl.pdf
cp ~/$sourcedir/$zahl.jpg ~/$targetdir/ordner$zahl/$zahl.jpg
zahl=$[$zahl + 1]
done
rm ~/zzahl.$$

Leider geht die Struktur wieder etwas verloren, glaube aber, dass man es so auch lesen kann.

Man könnte das jetzt noch ausbauen, um es für wiederholte Läufe zu verwenden, indem man z.B. abfragt, ob das Zielverezeichniss schon existiert um einen Fehler bei der Wiederanlage zu vermeiden.

Statt dem cp Befehl könnte man auch den mv Befehl nutzen, dann werden die Dateien im Quellverzeichniss gelöscht.
Auch lassen sich für cp bzw. mv diverse Schalter aktivieren, mit denen man überschreiben kann oder nur Dateien gleichen Namens aber neueren Datums ersetzt usw...

Es empfiehlt sich immer, etwas Linux im Hause zu haben.
bei Antwort benachrichtigen