Unix-Script für spezielle Ordnererstellung etc.

Diskutiere das Thema Unix-Script für spezielle Ordnererstellung etc. im Forum Mac OS - Unix & Terminal

  1. kongo-otto

    kongo-otto Thread Starter Mitglied

    Beiträge:
    125
    Zustimmungen:
    14
    Mitglied seit:
    26.12.2007
    Hey Leute,

    suche Lösungen für folgende Probleme. Habe hunderte von Dateien, die jeweils in separate Ordner verschoben werden sollen. Dabei soll jeder Ordner automatisch den Namen der verschobenen Datei erhalten.
    Zusätzlich suche ich eine Möglichkeit, aus sehr vielen Ordnern spezielle Elemente wie z.B. jpegs zu löschen.
    Weiterhin benötige ich noch eine Script, um Dateien mehrfach nach Angabe von gewissen Kriterien umzubenennen.

    Könnt Ihr mir da weiterhelfen? Danke :)

    Gruß kongo-otto
     
  2. promille

    promille Mitglied

    Beiträge:
    1.296
    Zustimmungen:
    36
    Mitglied seit:
    23.11.2004
    1) Verstehe ich nicht ganz.
    2)
    Code:
    find /Pfrad/zum/Ordner/ -name *.jpeg -exec rm {} \;
    3) Nach welchen Kriterien? Metadaten? Dateinamen, -endungen? Für das letzgenannte wäre 'zmv' geeigent. (Beispiel gibts auf der Homepage von maceis). Für Metadaten siehe 'mdls'.
     
  3. MacMännchen

    MacMännchen Mitglied

    Beiträge:
    2.879
    Zustimmungen:
    213
    Mitglied seit:
    03.10.2006
    Ich bin mir auch nicht sicher, ob ich es richtig verstanden habe. ;)

    @ kongo-otto
    Wenn diese "hunderte Dateien" in einem Ordner "/Pfad/zum/alten/Ordner" sind, könnte ein Script so aussehen:
    Code:
    #!/bin/bash
    for i in `ls /Pfad/zum/alten/Ordner`; do
    mkdir /Pfad/zum/neuen/Ordner/$i
    mv /Pfad/zum/alten/Ordner/$i /Pfad/zum/neuen/Ordner/$i
    done
    
    Dadurch werden alle Dateien im Ordner "/Pfad/zum/alten/Ordner" in einen neuen Ordner verschoben, der den gleichen Namen wie die verschobene Datei hat und im Ordner "/Pfad/zum/neuen/Ordner" liegt.
    Bedingung: /Pfad/zum/alten/Ordner und /Pfad/zum/neuen/Ordner müssen unterschiedliche Ordner sein.
    Eventuell testest du das zuerst mit ein paar Dummy Dateien, ob das Ergebnis dem entspricht, was du möchtest.
     
  4. kongo-otto

    kongo-otto Thread Starter Mitglied

    Beiträge:
    125
    Zustimmungen:
    14
    Mitglied seit:
    26.12.2007
    Hallo,

    nochmal ein Danke für Eure Antworten.

    @mobilephoner: Der Befehl funktioniert super!
    @MacMännchen: Genauso habe ich es gemeint. Nimmt einem wirklich ne Menge Arbeit ab. :)

    Zu meinem letzten Problem bin ich dann zu einer Lösung auf der Seite von maceis gekommen.
     
  5. maceis

    maceis Mitglied

    Beiträge:
    16.742
    Zustimmungen:
    604
    Mitglied seit:
    24.09.2003
    Wollte gerade einen Hinweis darauf posten :D.
    Ich nehme an, Du nimmst zmv.
     
  6. magheinz

    magheinz Mitglied

    Beiträge:
    2.414
    Zustimmungen:
    422
    Mitglied seit:
    06.02.2005
    Das dürfte unter Umständen Probleme bereiten. z.B. bei Dateinamen die Leerzeihen enthalten.

    Da löschen würde ich mit
    Code:
    rm -f $(find /Pfad/zum/Ordner/ -name *.jpeg -print)
    
    machen das es schneller ist. Wenn allerdings leerzeichen in den Pfaden sind, dann so:
    Code:
    find /Pfad/zum/Ordner/ -name *.jpeg -print | xargs rm -f
    
    Das verschieben ginge natürlich auch als Einzeiler:
    Code:
    find /Pfad/zum/Ordner/ -name *.jpeg -print | xargs -i mv {} /neuerPfad/zum/Ordner/
     
  7. maceis

    maceis Mitglied

    Beiträge:
    16.742
    Zustimmungen:
    604
    Mitglied seit:
    24.09.2003
    Ach so, fällt mir gerade ein. Auch hier ist die z-Shell wieder mal besser.
    Alle Dateien (nicht Ordner) löschen unterhalb von ~/Documents, die auf 'jpeg' enden:
    Code:
    rm ~/Documents/**/*jpeg(.)
    Verschieben:
    Code:
    mv ~/Documents/**/*jpeg(.) ~/Zielordner
    Wesentlich kürzer und ganz ohne 'find', 'exec', 'xargs' und schon erst recht ohne Probleme mit Leerzeichen etc. :D
     
  8. magheinz

    magheinz Mitglied

    Beiträge:
    2.414
    Zustimmungen:
    422
    Mitglied seit:
    06.02.2005
    +++ sinnloses fullquoting entfernt - der zitierte Beitrag steht doch unmittelbar darüber :hamma: +++
    stimmt:D

    EDIT:
    Danke für diese total sinnentleerende Verbesserung... :nono:
    Jetzt denkt jeder das mein "stimmt" deinem edit gilt...
     
  9. MacMännchen

    MacMännchen Mitglied

    Beiträge:
    2.879
    Zustimmungen:
    213
    Mitglied seit:
    03.10.2006
    Wohl wahr, das lässt sich aber ändern:
    Code:
    #!/bin/bash                                                                                                                 
    ls /Pfad/zum/alten/Ordner | while read i
    do
    mkdir "/Pfad/zum/neuen/Ordner/$i"
    mv "/Pfad/zum/alten/Ordner/$i" "/Pfad/zum/neuen/Ordner/$i"
    done
    
    Kein Einzeiler, aber es funktioniert jetzt auch mit Leerzeichen in Dateinamen.

    Das funktioniert nicht. Die Option -i kennt xargs unter OS X nicht, und die neuen Ordner existieren auch nicht.
     
  10. maceis

    maceis Mitglied

    Beiträge:
    16.742
    Zustimmungen:
    604
    Mitglied seit:
    24.09.2003
    Mit der for-Schleife geht es ebenfalls leerzeichensicher:
    Code:
    for file in ${quellordner}/*
    do
    mkdir "${zielordner}/$(basename ${file})" && mv $file "${zielordner}/$(basename ${file})"
    done
    Wenn man sich bereits im $quellordner befindet, geht es noch etwas einfacher:
    Code:
    for file in *
    do
    mkdir "${zielordner}/${file}" && mv $file "${zielordner}"
    done
     
Die Seite wird geladen...
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Akzeptieren Weitere Informationen...