Verschieben aller Dateien in Unterverzeichnissen in ein Hauptverzeichnis

Verschieben aller Dateien in Unterverzeichnissen in ein Hauptverzeichnis

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 findDateien aber keine Verzeichnisse ( -type f) publicund deren Unterstruktur finden und auf jeder gefundenen Datei -execeinen Befehl () ausführen, der sie (dargestellt durch {}) in den öffentlichen Ordner verschiebt.

Das maskierte Semikolon markiert lediglich das Ende der -execSequenz.

verwandte Informationen