Ich versuche, alle Dateien und Ordner von einem Verzeichnis in ein anderes zu kopieren, schließe jedoch bestimmte Dateien aus. Insbesondere möchte ich Subversion-Dateien und -Ordner ausschließen. Ich hätte jedoch gerne eine allgemeine und dennoch prägnante Lösung.
Ich stelle mir vor, dass ich in naher Zukunft mehrere Dateitypen ausschließen muss. Zum Beispiel möchte ich vielleicht .svn, * .bak und * .prj ausschließen.
Hier ist, was ich so zusammengestellt habe, aber es funktioniert nicht für mich. Der erste Teil, finde funktioniert, aber ich mache etwas falsch mit xargs und cp . Ich habe versucht , cp mit und ohne -R
. Außerdem verwende ich OS X und es scheint, dass es eine weniger funktionsfähige Version von xargs als Linux-Systeme gibt.
find ./sourcedirectory -not \( -name .svn -a -prune \)
| xargs -IFILES cp -R FILES ./destinationdirectory
-R
Flagge, da bin ich mir ziemlich sicher. Entfernen Sie das und Sie sollten in Ordnung sein (obwohl Sie vielleicht hinzufügen möchten, um -mindepth 1
den obersten Ordner zu ignorieren, den Sie nicht kopieren möchten, nehme ich an)
find
Befehl ordnungsgemäß-prune
zum Ausschließen von .svn-Elementen verwendet wird, übergeben Sie das-R
Flag,cp
das angibt, dass dieser Befehl rekursiv sein soll. Wenn Sie dies tun, verlieren Sie die Granularität, die Sie imfind
Befehl hatten. Ich bin mit diesem für eine Minute zu basteln gehen, aber ich denke , die Antwort ist nicht auf den Einsatz-R
in demcp
Befehl.