Hallo ihr Shellzauberer,
ich hab folgendes Problemchen:
Ein Haufen Dateien nach folgendem Muster:
Bla - Tag1.txt
Bla irgendwas - Morgen Nacht.txt
Was auch immer - Hallo.txt
Einzige Gemeinsamkeit der Trennstrich irgendwo im Dateinamen.
Was ich erreichen will:
Aus Dateinamen werden an der Stelle des Trennstriches Verzeichnamen generiert und die Dateien dann darin verschoben.
Aus "\test\Bla - Tag1.txt" soll z.B. "\test\Bla\Bla - Tag1.txt" werden.
Ich hab es schon mit diversen Kombinationen aus ls -1 | xargs, cut, sed und co versucht aber das beste Ergebnis bisher war dass alle Verzeichnisse erstellt wurden, mkdir aber bei "Bla irgendwas" die Verzeichnisse "Bla" und "irgendwas" anstelle von "Bla irgendwas" angelegt hat.
Dank voraus
egx
regex / sed problem
Hallo egx,
mir fällt an der mkdir-Stelle dieses ein.
Ich hoffe das hilft Dir erstmal weiter...
Gruß fuzzy
mir fällt an der mkdir-Stelle dieses ein.
Code: Alles auswählen
fuzzy@free:/tmp$ mkdir 'bla irgendwas'
fuzzy@free:/tmp$ mkdir "bla nochwas"
fuzzy@free:/tmp$ ls -1
bla irgendwas
bla nochwas
Gruß fuzzy
Hi,
da deine Dateien ja alle ein - enthalten wuerde ich "cut" verwenden, den Delimter auf - setzten, und nur das erste Feld ausschneiden. Das was da rauskomt, sollte das sein was du suchst. Versuch's doch mal, wenn's nicht klappt einfach nochmal fragen.
da deine Dateien ja alle ein - enthalten wuerde ich "cut" verwenden, den Delimter auf - setzten, und nur das erste Feld ausschneiden. Das was da rauskomt, sollte das sein was du suchst. Versuch's doch mal, wenn's nicht klappt einfach nochmal fragen.
Roland
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"
Mir fällt dazu nur ein kleines Skript ein. Als "reine" Pipe wird das schwierig...
Der grep dient dazu, wirklich nur Dateien zu erwischen, die ein "-" beinhalten, die "sed"s trimmen die jeweiligen Bestandteile, da du ja Blanks vor und nach dem "-" verwendest.
Nimms mal als "Anregung"...
Code: Alles auswählen
#!/bin/sh
ls -1|grep -- -|
while read line
do
dir=$(echo $line |cut -d- -f1|sed 's/ *$//')
file=$(echo $line|cut -d- -f2|sed 's/^ *//')
mkdir -p "$dir"
mv "$line" "$dir/$file"
done
Nimms mal als "Anregung"...
Hallo zusammen!
Das kleine script von algol ist super!
(Es macht ja sogar noch mehr als ich wollte)
Der Vollständigkeit halber:
Mit cut ( cut -d - -f 1 ) bekomme ich zwar den "Input" für mkdir, habe es allerdings nicht geschafft die nötigen " anzufügen.
Falls noch jemand eine "reine Pipe" Lösung findet, es würde mich sehr interessieren wie das gelöst werden kann.
Also ein fröhliches Danke für die schnelle Hilfe Leute!
Grüße egx
Das kleine script von algol ist super!
(Es macht ja sogar noch mehr als ich wollte)
Der Vollständigkeit halber:
Mit cut ( cut -d - -f 1 ) bekomme ich zwar den "Input" für mkdir, habe es allerdings nicht geschafft die nötigen " anzufügen.
Falls noch jemand eine "reine Pipe" Lösung findet, es würde mich sehr interessieren wie das gelöst werden kann.
Also ein fröhliches Danke für die schnelle Hilfe Leute!
Grüße egx