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
-RFlagge, da bin ich mir ziemlich sicher. Entfernen Sie das und Sie sollten in Ordnung sein (obwohl Sie vielleicht hinzufügen möchten, um -mindepth 1den obersten Ordner zu ignorieren, den Sie nicht kopieren möchten, nehme ich an)
findBefehl ordnungsgemäß-prunezum Ausschließen von .svn-Elementen verwendet wird, übergeben Sie das-RFlag,cpdas angibt, dass dieser Befehl rekursiv sein soll. Wenn Sie dies tun, verlieren Sie die Granularität, die Sie imfindBefehl hatten. Ich bin mit diesem für eine Minute zu basteln gehen, aber ich denke , die Antwort ist nicht auf den Einsatz-Rin demcpBefehl.