Unterverzeichnis aus Pfad entfernen und Dateien in übergeordnetes Verzeichnis umwandeln

Unterverzeichnis aus Pfad entfernen und Dateien in übergeordnetes Verzeichnis umwandeln

Ich habe eine Reihe von Dateien, die in ihrem Pfad einen doppelten Ordner enthalten (in den folgenden Beispielen ). Ich möchte dieses Verzeichnis entfernen und alle Inhalte in „contains“ in das übergeordnete Verzeichnis verschieben. Um Suchen und Ersetzen als Metapher zu verwenden, möchte ich im Pfad „ durch“ barersetzen ./foo//

Ausgangszustand:

foo/bar/some_file.txt
foo/another_file.txt
quux/bar/yet_another_file.txt

Ziel:

foo/some_file.txt
foo/another_file.txt
quux/yet_another_file.txt

Ich würde dieses Problem am liebsten mit Bash lösen, bin aber für jede Lösung offen, die keine Abhängigkeiten hat und unter Linux funktioniert.


Falls dies für jemanden hilfreich ist, der über diesen Thread stolpert, gibt eseine vorhandene Antwort für Windowsmit Robocopy.

Antwort1

Ich habe es schließlich folgendermaßen gelöst:

for iteration_path in ${1}/*; do
  if [[ ! -z $iteration_path ]]; then
    mv "${iteration_path}"/bar/* "${iteration_path}";
    rmdir "${iteration_path}"/bar;
  fi
done

Wenn jemand die Vorschläge von AFH weiter ausführen kann,Parametererweiterung, mich würde interessieren, ob das eine elegantere Lösung ist.

verwandte Informationen