В настоящее время я пытаюсь find
(и копировать) все файлы и структуру папок, соответствующие определенному шаблону, в указанном каталоге, и я почти там!
В частности, я хочу рекурсивно копировать все папки, не начинающиеся с символа «_», по указанному пути.
find /source/path/with/directories -maxdepth 1 -type d ! -name _\* -exec cp -R {} /destination/path \;
В / source / path / with / directoryies / path находятся машинно-ориентированные каталоги, начинающиеся с '_' и других, и меня интересует только копирование других. По независящей от меня причине команда find возвращает каталог / source / path / with / directoryies / и, следовательно, копирует его содержимое, включая каталоги, начинающиеся с _.
У кого-нибудь есть подсказка, почему это так?
Спасибо,
паскаль
Ответы:
find
возвращает корневой путь, потому что он соответствует вашим критериям - то есть это каталог, и он не начинается с_
.Вы ищете
-mindepth 1
, я подозреваю:Ссылка: найти справочную страницу
источник
Меняться от:
чтобы:
Этот способ
/source/path/with/directories
не будет включен.Это
shopt -s dotglob
так, что*
также будет сопоставлять файлы и каталоги, начиная с.
(скрытые файлы, каталоги).И все это заключено в под-оболочку,
(...)
чтобы ограничить эффектshopt
только внутри под-оболочки, иначе вам придется отменить это позжеshopt -u dotglob
.источник
.
. Не пытайтесь.*
, или вы будете соответствовать целому ряду других вещей, которые вы никогда не намеревались. ;-)shopt
.