Hallo,
ich bin langsam etwas ratlos und sehe vermutlich den Wald vor lauter Bäumen nicht mehr. Ich habe folgendes Problem:
Ich muss zwecks Neustrukturierung einen Haufen Dateien verschieben und würde das gerne per SH-Script machen. Da ich dieses Beispiel schon öfter jetzt bei meiner Recherche gefunden habe, behalte ich es einfach bei, da es auch egal sein sollte was für Dateien wie verschoben werden sollen.
Jetzige Struktur
- Hauptordner
- Ordner 1
- Datei 1.ext
- Datei 2.ext
- Datei 3.ext
- Datei 4.ext
- Datei 5.ext
- Ordner 2
- Datei 1.ext
- Datei 2.ext
- Datei 3.ext
- Datei 4.ext
- Datei 5.ext
Die Dateien sind verschiedenster Dateierweiterungen. Jetzt hätte ich gerne folgende Strucktur
- Hauptordner
- Ordner 1
- Ordner aus Datei 1
Datei 1.ext
- Ordner aus Datei 2
Datei 2.ext
- Ordner aus Datei 3
Datei 3.ext
- Ordner aus Datei 4
Datei 4.ext
- Ordner aus Datei 5
Datei 5.ext - Ordner 2
- Ordner aus Datei 1
Datei 1.ext
- Ordner aus Datei 2
Datei 2.ext
- Ordner aus Datei 3
Datei 3.ext
- Ordner aus Datei 4
Datei 4.ext
- Ordner aus Datei 5
Datei 5.ext
- Ordner 1
Obwohl ich so gut wie sicher bin das bei der Dateispeicherung keine Umlaute benutzt wurden, wäre es schön wenn Dateien mit umlauten ignoriert werden.
Was habe ich bis jetzt versucht?
Ich wollte das ganze mit schleifen (loops) machen, aber das wird nicht getan, auch nicht das Umlaute und Leerzeichen entfernen und ich weiss nicht warum
Um evtl. vorhandene Umlaute umzuenennen und Leerzeichen zu entfernen.
for file in *.*; do mv -v $file `echo $file | sed -e "s/ä/ae/g"`; done
for file in *.*; do mv -v $file `echo $file | sed -e "s/ö/oe/g"`; done
for file in *.*; do mv -v $file `echo $file | sed -e "s/ü/ue/g"`; done
for file in *.*; do mv -v $file `echo $file | sed -e "s/ß/ss/g"`; done
for file in *.*; do mv -v $file `echo $file | sed -e "s/Ä/Ae/g"`; done
for file in *.*; do mv -v $file `echo $file | sed -e "s/Ö/Oe/g"`; done
for file in *.*; do mv -v $file `echo $file | sed -e "s/Ü/Ue/g"`; done
for file in *.*; do mv -v $file `echo $file | sed -e "s/ /_/g"`; done
Zum kopieren dann das
for file in *.*; do mv $i ${i%.*}/*.*; done
Betriebssystem ist Debian genauer Openmediavault.
Ich hoffe mir kann hier jemand sagen wo mein Fehler ist, oder hat ein Script zur Hand welches er mir zur Verfügung stellen kann.
Lieben Gruss
Michael