Wie kann ich die in allen Unterverzeichnissen enthaltenen Dateien in das aktuelle Verzeichnis verschieben und dann die leeren Unterverzeichnisse entfernen?
Ich habe diese Frage gefunden , aber die Antwort angepasst an:
mv * .
funktioniert nicht; Ich habe viele Warnungen erhalten, die wie folgt aussehen:
mv: wil and ./wil are identical
Die in den Unterverzeichnissen enthaltenen Dateien haben eindeutige Namen.
quelle
-n, --no-clobber
überschreiben Sie keine vorhandene Datei. Das könnte Sie auch interessieren-b, --backup
.Versuche dies:
Weitere Informationen: Probieren Sie das Find-Stamement alleine aus. Es sollte eine Liste mit allen Dateien enthalten, die Sie verschieben möchten (lassen Sie das weg
-print0
). Beispiel:mit
-print0
undxargs
Sie erstellen jetzt eine Liste der auszuführenden Anweisungen. Das-J %
Flag bedeutet, das Listenelement hier einfügen, damitmv $FILE .
es für jede gefundene Datei ausgeführt wird.Das obige funktioniert für die BSD xargs. Wenn Sie die GNU-Version (Linux) verwenden, nehmen Sie
-I %
statt-J %
quelle
Bash 4:
quelle
1 schneller Trick, funktioniert nur, wenn Ihre Dateien Erweiterungen (mit einem Punkt) haben:
quelle
Führen Sie einfach diesen Befehl aus :-)
mv **/*.* .
quelle
.
Namen haben, oder?