So kopieren Sie eine Teilmenge von Dateien aus einem bestimmten Ordner

So kopieren Sie eine Teilmenge von Dateien aus einem bestimmten Ordner

Ich habe folgende Verzeichnisstruktur.

dirA/[DateiA, irgendeinB, BalkenC, DateiD, irgendeinE, BalkenF] dirB/[DateiA, BalkenC, irgendeinE]

Ich möchte nur Dateien von Verzeichnis A nach Verzeichnis B kopieren, die bereits in Verzeichnis B vorhanden sind. Wie führe ich dieses selektive Kopieren durch?

Antwort1

Sie könnten beispielsweise den Befehl find mit der Option -exec verwenden. Sie würden wahrscheinlich eine Syntax wie die folgende verwenden (muss in dirB ausgeführt werden, und beachten Sie, dass es rekursiv ist):

find ./ -type f -exec cp '../dirA/{}' ./ \;

Das -type f weist find an, nur normale Dateien zu berücksichtigen, das -exec sagt: führe den folgenden Befehl für jede Datei aus. Das \; am Ende beendet den auszuführenden Befehl. Das {} ist ein Platzhalter, der von find durch den tatsächlichen Dateinamen ersetzt wird. Weitere Einzelheiten und weitere Anwendungsbeispiele finden Sie auf der Manpage von find.

Folgendes passiert auf meinem PC:

desktop:~$ mkdir dirA
desktop:~$ mkdir dirB
desktop:~$ cd dirA
desktop:~/dirA$ touch foo bar this
desktop:~/dirA$ cd ..
desktop:~$ cd dirB
desktop:~/dirB$ touch bar this
desktop:~/dirB$ find ./ -type f -exec cp -v '../dirA/{}' ./ \;

»../dirA/./this“ -> »./this“
»../dirA/./bar“ -> »./bar“

verwandte Informationen