• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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. :)