1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Verzeichnisinhalte in eine Ebene verschieben

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von klotzfisch, 29.01.08.

  1. klotzfisch

    klotzfisch Jamba

    Dabei seit:
    27.12.04
    Beiträge:
    57
    Hallo,

    ich möchte den Inhalt aller Unterverzeichnisse eines Verzeichnisses "hoch"-verschieben. (Die Dateinamen sind gesicherter weise nicht doppelt vorhanden, wenn, könnten sie auch überschrieben werden.) Leider gibt es bei meinem Bash-Skript Fehler, die mit den Dateinamen (Leerzeichen, Umlaute, Punkte) zusammenhängen... Gibt es noch einen anderen Weg, oder eine bessere Version?

    Code:
    #! /bin/sh
    # kopiert alle Dateien aus dem Unterverzeichnis ein Level nach oben
    # Version: 2007-01-13
    
    # alle unterverzeichnisse finden
    for unterverzeichnisse in $(find . -maxdepth 1 -type d)
    do
        echo "Verzeichnis $unterverzeichnisse auslesen und kopieren..."
        
        # Dateien im Unterverzeichnis finden und in die aktuelle Ebene kopieren
        for dateien in $(find "./$unterverzeichnisse" -maxdepth 1 -type f)
        do
            mv -n $dateien ./
        done
        
        # löschen, wenn leer
        if [ ! "`ls -A $unterverzeichnisse`" ]; 
        then echo $unterverzeichnisse
        echo "Verzeichnis $unterverzeichnisse gelöscht."
        fi
    done
     
  2. Rastafari

    Rastafari Golden Noble

    Dabei seit:
    10.03.05
    Beiträge:
    17.898
    Yessas na!
    Warum versucht ihr nur immer alles zuerst so kompliziert wie möglich? :)
    Code:
    find "${suchbeginn}" ! -type d ! -name .DS_Store ! -name Icon$'\r' -execdir mv -i {} .. \;
    Willst du doppelt vorkommende Dateinamen von Hand abnicken, führe mv mit der Option -i aus. Automatisch überschreiben geht dagegen mit -f
    Aber pass trotzdem auf was du tust, ok? Zwei der gemeinsten, immer wieder vorkommenden Fallstricke hab ich dir schon entknotet, den Rest darfst du selber rausfinden, damit dir nicht langweilig wird. Beispielsweise unsichtbares rausfiltern etc... nach Bedarf. :)
     

Diese Seite empfehlen