Вы не можете заставить find
сделать это, но Find
может помочь: в блоке вам нужно проверить, является ли текущий путь одним из тех, которые вы хотите исключить или нет;если так, то звоните Find#prune
.Кажется, это стандартная идиома при использовании Find
.
Если вы решите использовать Dir#[]
вместо этого, вы можете вызвать reject
для его результата, передавая блок, чтобы исключить определенные типы файлов.Тем не менее, обратите внимание, что, насколько я понимаю, Dir#[]
читает все содержимое вашего каталога d
, прежде чем вы сможете фильтровать, в то время как Find#prune
гарантирует не читать содержимое сокращенных подкаталогов, если вы вызываете его в переданном блокедо Find#find
.