Parece que você quer evitar procurar arquivos em *cache*
diretórios mais do que encontrar arquivos com *pillar*
e não *cache*
em seus nomes. Então, apenas diga find
para não se incomodar em descer em *cache*
diretórios:
find . -iname '*cache*' -prune -o -iname '*pillar*' -print
Ou com zsh -o extendedglob
:
ls -ld -- (#i)(^*cache*/)#*pillar*
(não estritamente equivalente, pois isso informaria um arquivo foo/pillar-cache
)
Ou (menos eficiente à medida que desce a árvore inteira como na @solução do apaul ):
ls -ld -- (#i)**/*pillar*~*cache*
Detalhes sobre os globs específicos de zsh
:
-
(#i)
: ative a correspondência insensível a maiúsculas e minúsculas -
^
: operador glob de negação -
(...)
: agrupamento (como@(...)
emksh
). -
<something>#
: zero ou mais de<something>
(como*
em regexps). -
~
: e não operador (corresponde ao caminho completo) -
**/
: 0 ou mais níveis de diretório (abreviação de(*/)#
).
Adicione o qualificador (D)
glob se você quiser descer em diretórios ocultos e corresponder arquivos ocultos, como na find
solution.