• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> 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
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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. :)