• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> 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. :-)