Я намагаюся скопіювати всі файли та папки з одного каталогу в інший, але виключаю певні файли. Зокрема, я хочу виключити підривні файли та папки. Однак я хотів би загального, але стислого рішення.
Я думаю, я знайду необхідність виключити кілька типів файлів найближчим часом. Наприклад, я можу захотіти виключити .svn, * .bak та * .prj.
Ось що я так склав, але це не працює для мене. Перша частина, знайдіть твори, але я роблю щось не так із xargs та cp . Я спробував cp з і без -R. Крім того, я використовую OS X і, здається, має менш популярну версію xargs, ніж системи Linux.
find ./sourcedirectory -not \( -name .svn -a -prune \)
| xargs -IFILES cp -R FILES ./destinationdirectory
-Rпрапор, я майже впевнений. Видаліть це, і вам слід буде добре (хоча ви, можливо, захочете додати, -mindepth 1щоб ігнорувати папку каталогу топлевелю, яку ви не хочете копіювати, я вважаю)
findкоманда належним чином використовує-pruneдля виключення .svn елементів, ви передаєте-Rпрапор,cpякий повідомляє, що ця команда має рекурсивний характер. Коли ви це зробите, ви втрачаєте будь-яку деталізацію, яку ви мали вfindкоманді. Я збираюся поцікавитися цим хвилиною, але думаю, що відповідь не використовувати-Rвcpкоманді.