Sie sind nicht angemeldet.

  • Anmelden

Lieber Besucher, herzlich willkommen bei: MastersForum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

14.09.2009, 15:43

Kleine bash-Frage

Moin,

hab eigentlich ein ganz simples Problem:
Ich möchte alle oder eine Teilmenge von Dateien eines beliebigen Verzeichnisses in ein anderes Verzeichnis kopieren und zwar in einer bestimmten Reihenfolge (lexikografisch, quasilexikografisch o.ä.).

Dummerweise kenne ich mich mit Shell-Programmierung nicht wirklich aus.
Wie realisiere ich sowas am geschicktesten?
Also naiverweise würde ich mit
(1)

Quellcode

1
ls > blah.txt

erstmal alle Dateinamen eines Verzeichnisses (gehe davon aus, dass ich mich schon in der tiefsten Ebene befinde) in eine Datei zu schreiben.
Dann würde ich
(2) einen beliebigen Algorithmus auf die Datei anwenden, der entweder irgendwie sortiert oder irgendwelche Elemente nach irgendwelchen Regeln auswählt.
(3) ???
Jetzt würde ich versuchen, den Inhalt der Datei Zeile für Zeile als Dateinamen aufzufassen und mit einer Schleife dann alles nacheinander kopieren.

Wie realisiere ich (3)?

sylence

Administrator

Beiträge: 1 861

Wohnort: Dresden

Beruf: GER

  • Nachricht senden

2

14.09.2009, 16:04

Quellcode

1
for i in `cat blah.txt`; do mv $i ziel; done

wäre eine Möglichkeit

Tocha

Meister

Beiträge: 2 151

Wohnort: Unterschiedlich

Beruf: GER

  • Nachricht senden

3

14.09.2009, 18:12

gott, sowas hatte ich früher auch in der Uni und ich weiss nichts mehr, gar nichts mehr.

irgendwie traurig x/

4

14.09.2009, 20:21

Zitat

Original von sylence

Quellcode

1
for i in `cat blah.txt`; do mv $i ziel; done

wäre eine Möglichkeit

Danke, das habe ich gesucht (irgendwie sieht es auch bekannt aus, aber hab bestimmt vor 5 Jahren das letzte mal sowas gemacht ;)).