2016-07-29 21 views
0

Ich möchte alle Dateien mit *.jpg in einem Ordner enthält seinen Unterordner in einem anderen Ordner finden und kopieren Ich benutzeLinux finden und Kopieren von Dateien mit demselben Namen Zielordner nicht überschreiben

find /tempL/6453/ -name "*.jpg" | xargs -I '{}' cp {} /tempL/; 

aber es überschreibt Dateien mit dem gleichen Namen

zum Beispiel in /tempL/6453/ gibt es test (1).jpgtest (2).jpg und Ordner 1, in /tempL/6453/1/ gibt es auch Dateien mit dem gleichen Namen hat test (1).jpgtest (2).jpg

Wenn ich den obigen Befehl verwenden, gibt es nur zwei Dateien test (1).jpgtest (2).jpg in /tempL/, es kann nicht alle Dateien in /tempL/ kopieren.

Was ich will ist, alle Dateien zu /tempL/ zu kopieren, wenn es den gleichen Dateinamen gibt, einfach umbenennen, wie?

+0

cp * .jpg/Templ/ –

+0

cp * zu verarbeiten .jpg PUT_DESTINATION_PATH –

+0

@OmidCompSCI Bitte lesen Sie die sorgfältig Frage. Zugegebenermaßen könnte es besser formuliert sein, aber es ist klar, dass das OP Dateien umbenennen will, die in jedem Quellverzeichnis den gleichen Namen haben. Ihre Vorschläge benennen die Quellenunterverzeichnisse nicht um und führen keine Rekursionen durch. – kaylum

Antwort

0

Was ich will ist, alle Dateien nach/tempL/zu kopieren, wenn es den gleichen Dateinamen gibt, einfach umbenennen, wie?

1) Wenn Sie nicht nur das tun, was cp --backup Sie für vorhandene Datei eine Sicherung überschrieben geben, mit --suffix Möglichkeit cp, können Sie auch das Suffix angeben können für die Sicherung verwendet werden.

2) --parents Option von cp wird Verzeichnisbaum beibehalten, d. H. Dateien in Ordner 1 werden in neu erstellten 1 Ordner kopiert.

3) Wenn Sie Ihre Umbenennungsverarbeitung anpassen möchten, können Sie nicht nur den Befehl cp verwenden. Skript für sie schreiben und nennen es das Ergebnis von find