2016-05-23 13 views
0

Ich verwende den folgenden Befehl, um alle Dateien von einem Ordner zu einem anderen zu verschieben. In diesem Fall verschiebe ich eine Datei von folder1 wie der folgenden Befehl Verzeichnis2:Wie verschiebe ich den ganzen Typ file file1.ext, .file2ext und .anotherext von einem Ordner in einen anderen Ordner mit der linux (debian) Kommandozeile?

# mv -v /path2dir/subdir/folder1/* /var/www/folder2 

Natürlich folder2 vor gemacht worden. Das Problem ist nicht alle Dateien erfolgreich verschoben, einige Dateien wie .file2ext, .anotherext oder Dateien, beginnend mit Zeichen (.) wie .htaccess und . error_log nicht erfolgreich in Bewegung

wie Sie dieses Problem beheben?

Vielen Dank im Voraus ...

Antwort

2

Bash bietet eine flexiblere Art und Weise Weg-Token zu spezifizieren:

mv -v /path2dir/subdir/folder1/{.*,*} /var/www/folder2 

in geschweiften Klammern Sie eine durch Kommata getrennte Liste von Tokens angeben können. Die Shell wird sie aufbrauchen, indem sie über sie hinweggeht, und so alle Matches von allen behandeln.

Eine kürzere, aber ansonsten gleichwertige Alternative ist dies:

mv -v /path2dir/subdir/folder1/{.,}* /var/www/folder2 

Beide Alternativen Sie eine Warnung über Einträge geben, die aufgrund der guten Gründen übersprungen wird (. und ..). Sie können diese unterdrücken, indem Sie die Fehlerausgabe des Befehls umleiten, aber Sie sollten mit solchen Dingen vorsichtig sein, da Sie wichtige Details auf diese Weise übersehen könnten:

+0

ok, alle Dateien {. *, *} ist umgezogen ... danke für deine Hilfe :-) – Anz

+0

wenn das fehlschlägt, ist die Datei immer noch in ordner1 gespeichert? – Anz

+0

Dateien, die nicht verschoben werden können, bleiben natürlich dort, wo sie sind. Könnte zum Beispiel mit Dateien auftreten, für die Sie keine Berechtigungen zum Verschieben haben. Deshalb habe ich die Bemerkung gegen Ende gemacht. – arkascha