• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

Verzeichnisinhalte in eine Ebene verschieben

klotzfisch

Jamba
Registriert
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
 
Gibt es noch einen anderen Weg, oder eine bessere Version?
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. :-)