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“ bar
ersetzen ./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.