Я пытаюсь использовать find, чтобы найти и исключить / отфильтровать несколько каталогов от копирования в другой каталог резервных копий. Мои попытки сделать это с помощью параметра find '-exe c' закончились копированием каждого обработанного файла, а не только совпадений, поэтому я весьма озадачен тем, каким должно быть ожидаемое поведение, и был бы признателен за помощь в получении лучшего понимания.
Начальная точка:
me@computer>ls
AddMonitorsOnEntry MantisCoreFormatting MantisGraph PastePicture XmlImportExport
Убедитесь, что find исключает нежелательные «файлы», как ожидалось
me@computer>find . -maxdepth 1 -not -regex '.*MantisCoreFormatting\|.*MantisGraph\|.*XmlImportExport'
.
./AddMonitorsOnEntry
./PastePicture
Теперь скопируйте эти 2 каталоги в резервный каталог:
me@computer>find . -maxdepth 1 -not -regex '.*MantisCoreFormatting\|.*MantisGraph\|.*XmlImportExport' -exec cp -dr '{}' ~/backup \;
Теперь посмотрим, сработало ли это ...
me@computer>cd ~/backup
me@computer>ls
AddMonitorsOnEntry backup MantisCoreFormatting MantisGraph PastePicture XmlImportExport
WTH ?? Я думал, что '-exe c' работает только на совпадениях, согласно этому фрагменту со страницы руководства: "... Указанная команда запускается один раз для каждого сопоставленного файла ..."
Я знаю Есть и другие способы выполнить sh эту задачу, но '-exe c', кажется, достаточно хорошо подходит для постера https://unix.stackexchange.com/questions/50612/how-to-combine-2-name-conditions-in-find/50633. Я ищу помощи, чтобы понять, , как использовать "-exe c" вместо использования xargs или чего-то еще . Спасибо.