Вы можете использовать find
с -prune
опцией.
Пример из man find
:
cd / source-dir
найти . -name .snapshot -prune -o \ (\! -name * ~ -print0 \) |
cpio -pmd0 / dest-dir
Эта команда копирует содержимое / source-dir в / dest-dir, но пропускает
файлы и каталоги с именем .snapshot (и все, что в них). Это также
пропускает файлы или каталоги, чье имя оканчивается на ~, но не их
палатки. Конструкция -prune -o \ (... -print0 \) довольно распространена.
Идея в том, что выражение перед -prune соответствует вещам, которые
быть обрезанным. Однако само действие -prune возвращает true, поэтому
следующий -o гарантирует, что правая часть вычисляется только для
те каталоги, которые не были сокращены (содержимое сокращенного
каталоги даже не посещаются, поэтому их содержимое не имеет значения).
Выражение справа от -o приведено только в скобках
для ясности. Подчеркивается, что действие -print0 выполняется только
за вещи, к которым не было применено -прун. Поскольку
условие `` и 'между тестами связывает более тесно, чем -o, это
в любом случае по умолчанию, но скобки помогают показать, что происходит
на.