
Ich habe ein Verzeichnis namens „public“, das tausende Unterverzeichnisse enthält, z. B.:
public/63a/e9b/79a/file.pdf
public/64a/2cd/184/other_file.pdf
...
Mein Ziel ist es, alle in diesen Unterverzeichnissen enthaltenen Dateien in das Hauptverzeichnis (also: public) zu verschieben.
Ich glaube, dazu brauche ich eine rekursive Funktion.
Kann mir jemand helfen?
Antwort1
Das Werkzeug hierfür ist bereits Teil der Standard-Linux-Umgebung:
find public -type f -exec mv {} public/ \;
Erläuterung:
Wir wollen find
Dateien aber keine Verzeichnisse ( -type f
) public
und deren Unterstruktur finden und auf jeder gefundenen Datei -exec
einen Befehl () ausführen, der sie (dargestellt durch {}
) in den öffentlichen Ordner verschiebt.
Das maskierte Semikolon markiert lediglich das Ende der -exec
Sequenz.