Próbuję skopiować wszystkie pliki i foldery z jednego katalogu do drugiego, ale wykluczam niektóre pliki. W szczególności chcę wykluczyć pliki i foldery subversion. Chciałbym jednak ogólne, ale zwięzłe rozwiązanie.
Wyobrażam sobie, że w najbliższej przyszłości będę musiał wykluczyć kilka rodzajów plików. Na przykład mogę wykluczyć .svn, * .bak i * .prj.
Oto, po co to przygotowałem, ale to nie działa dla mnie. Pierwsza część, znajdź działa, ale robię coś złego z xargs i cp . Próbowałem cp zi bez -R
. Ponadto używam OS X i wygląda na to, że ma mniej polecaną wersję Xargsa niż systemy Linux.
find ./sourcedirectory -not \( -name .svn -a -prune \)
| xargs -IFILES cp -R FILES ./destinationdirectory
-R
flaga, jestem całkiem pewien. Usuń to i powinieneś być w porządku (choć możesz chcieć dodać, -mindepth 1
aby zignorować folder katalogu najwyższego poziomu, którego nie chcesz kopiować, zakładam)
find
polecenie prawidłowo używa-prune
do wykluczenia elementów .svn, to przekazujesz-R
flagę,cp
która mówi, że to polecenie ma być rekurencyjne. Kiedy tak się dzieje, tracisz wszelką ziarnistość, jaką posiadasz wfind
poleceniu. Będę majstrować przy tym przez chwilę, ale myślę, że odpowiedzi nie należy używać-R
wcp
poleceniu.