Benutzerdefinierte Suche

Ordnernamen verknüpfen und umkopieren - Automator?

  1. herbit

    herbit Thread StarterMacUser Mitglied

    Mitglied seit:
    19.09.2004
    Beiträge:
    619
    Zustimmungen:
    50
    Hallo,

    ich habe ein etwas komplizierteres Umbenenn-Problem, und zwar möchte ich folgendes erreichen:

    vorher:

    OrdnerA/UnterordnerA1/Dateien
    OrdnerA/UnterordnerA2/Dateien
    usw.
    OrdnerB/UnterordnerB1/Dateien
    OrdnerB/UnterordnerB2/Dateien

    soll werden:

    OrdnerA - UnterordnerA1/Dateien
    OrdnerA - UnterordnerA2/Dateien
    OrdnerB - UnterordnerB1/Dateien
    OrdnerB - UnterordnerB2/Dateien
    usw.

    Ich will also sozusagen eine Ordnerhierarchie einsparen. Wie kann man das erreichen? Ich dachte an zwei Schritte: 1. die Unterordner jeweils so umbenennen, dass die Namen der übergerordneten Ordner als Namensbestandteil aufgenommen werden. 2. die Unterordner an einen anderen Ort verschieben.

    Mit Automator bin ich irgendwie nicht weiter gekommen, habe damit aber auch keine Erfahrung. Evtl. mit der Kommandozeile?

    Wer kann mir Tipps geben?

    Grüße,
    herbit
     
    herbit, 24.10.2005
  2. Wile E.

    Wile E.MacUser Mitglied

    Mitglied seit:
    09.03.2005
    Beiträge:
    1.864
    Zustimmungen:
    4
    Im Terminal kannst Du das sicher mit einem kleinen Shell-Skript bewerkstelligen, z.B. mit zwei ineinandergeschachtelten For-Schleifen (s. man bash). (Allerdings wuerde ich Dir grundsaetzlich von Leerzeichen und Bindestrichen im Verzeichnisnamen abraten.)
    Wile
     
    Wile E., 24.10.2005
  3. Wile E.

    Wile E.MacUser Mitglied

    Mitglied seit:
    09.03.2005
    Beiträge:
    1.864
    Zustimmungen:
    4
    Weil ich gerade Mittagspause hab, hier die Loesung. Geh in das Verzeichnis, in dem OrdnerA usw. liegen. Unter der Annahme, dass dort nur Ordner enthalten sind, sollte das hier Dein Problem erledigen:

    Code:
    for i in * ; do for j in $i/*; do [I]echo[/I] $j $i\_${j##*\/}; done; done
    Das zeigt jetzt erstmal nur an. Wenn das das richtige tut, ersetze "echo" durch "mv" und es benennt um. :)

    Wenn es gleich alles zusammen erledigen soll, also die alten Verzeichnisse noch loeschen, muss noch etwas dazu, so wie hier:

    Code:
    for i in * ; do for j in $i/*; do [I]echo[/I] $j $i\_${j##*\/}; done; [I]echo[/I] $i; done
    (Da dann das erste echo durch "mv" ersetzen, das zweite durch "rm". Ist aber runtergehackt und ungetestet.)

    Code jeweils in einer Zeile einfuegen.

    HTH
    Wile
     
    Wile E., 24.10.2005
  4. herbit

    herbit Thread StarterMacUser Mitglied

    Mitglied seit:
    19.09.2004
    Beiträge:
    619
    Zustimmungen:
    50
    Danke für Deine schnelle Hilfe, Wile E..
    Ich habe den oberen Code ausgeführt. Es scheint so als ob "$i/*" leider "OrdnerA/*" liefert, statt die Unterordner. $j nimmt dann die einzelnen Bestandteile von "OrdnerA/*", getrennt nach Leerzeichen (die ich natürlich in den Ordnernamen habe) an.
    Mach ich was falsch?
     
    herbit, 24.10.2005
  5. Wile E.

    Wile E.MacUser Mitglied

    Mitglied seit:
    09.03.2005
    Beiträge:
    1.864
    Zustimmungen:
    4
    Ja, Leerzeichen in Dateinamen verwenden. :p
    Das Problem muesste sich loesen lassen, indem man an geeigneter Stelle Anfuehrungszeichen benutzt. Etwa so wie hier (ungetestet):

    Code:
    for i in * ; do for j in [B]"[/B]$i[B]"[/B]/*; do echo [B]"[/B]$j[B]"[/B] [B]"[/B]$i[B]"[/B]\_[B]"[/B]${j##*\/}[B]"[/B]; done; done
    Bin gerade in Eile, deshalb kann ich nicht weiter probieren. Vielleicht klappt das ja schon.

    Wile
     
    Wile E., 24.10.2005
  6. herbit

    herbit Thread StarterMacUser Mitglied

    Mitglied seit:
    19.09.2004
    Beiträge:
    619
    Zustimmungen:
    50
    Super, jetzt klappts! Danke! Werde aber noch ein bisschen Testen, bevor ich es auf meine 300+ Ordner loslasse.
     
    herbit, 24.10.2005
  7. Wile E.

    Wile E.MacUser Mitglied

    Mitglied seit:
    09.03.2005
    Beiträge:
    1.864
    Zustimmungen:
    4
    Bitteschoen! :)
    Wile
     
    Wile E., 24.10.2005
  8. herbit

    herbit Thread StarterMacUser Mitglied

    Mitglied seit:
    19.09.2004
    Beiträge:
    619
    Zustimmungen:
    50
    Also, so hats letztendlich geklappt:
    Code:
    for i in * ; do for j in "$i"/*; do mv "$j" "$i - ${j##*\/}"; done; rm -r "$i"; done
    Ich hatte zwar in der Vergangenheit immer wieder mit regulären Ausdrücken zu tun, war aber immer zu faul es "gründlich" zu lernen. Danke nochmal!
     
    herbit, 24.10.2005
  9. Wile E.

    Wile E.MacUser Mitglied

    Mitglied seit:
    09.03.2005
    Beiträge:
    1.864
    Zustimmungen:
    4
    Das sind gar keine regulaeren Ausdruecke. :D

    Uebrigens hast Du jetzt schon wieder Leerzeichen in Deinen Pfaden, aber wer nicht hoeren will... ;)

    Wile
     
    Wile E., 24.10.2005
  10. herbit

    herbit Thread StarterMacUser Mitglied

    Mitglied seit:
    19.09.2004
    Beiträge:
    619
    Zustimmungen:
    50
    Es sind Musikdateien, das sieht auf dem Player dann einfach besser aus mit Leerzeichen.

    Ok, es sind keine reg. Ausdr., aber die Syntax orientiert sich doch dran oder?
     
    herbit, 24.10.2005
Die Seite wird geladen...
Ähnliche Themen - Ordnernamen verknüpfen umkopieren
  1. cpx
    Antworten:
    35
    Aufrufe:
    839
    roedert
    04.05.2017
  2. lost-in-emotion
    Antworten:
    0
    Aufrufe:
    175
    lost-in-emotion
    19.08.2016
  3. cruiserbass
    Antworten:
    0
    Aufrufe:
    340
    cruiserbass
    23.09.2011
  4. shivers
    Antworten:
    1
    Aufrufe:
    620
    rpoussin
    24.08.2010
  5. jodomac39
    Antworten:
    0
    Aufrufe:
    359
    jodomac39
    04.08.2008