Я намагаюся скопіювати всі файли та папки з одного каталогу в інший, але виключаю певні файли. Зокрема, я хочу виключити підривні файли та папки. Однак я хотів би загального, але стислого рішення.
Я думаю, я знайду необхідність виключити кілька типів файлів найближчим часом. Наприклад, я можу захотіти виключити .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
команді.