Como posso empilhar curingas para direcionar arquivos específicos?

1

Eu quero segmentar todos os arquivos chamados fooxxxbarxxx . O mais comum entre todos esses arquivos é que contém foo e bar .

Eu tentei usar *foo*bar* e *foo**bar* , mas não funciona.

Especificamente, estou tentando criar links para esses arquivos, e o restante do código já funciona para execuções mais diretas (procura em todas as subpastas de path ):

shopt -s globstar

ln -s /path/**/*foo*bar* .

Obrigado

    
por Krotanix 03.11.2017 / 12:41

2 respostas

1

Em bash shell, você precisa usar a opção extglob para este tipo de expansão de shell.

shopt -s extglob nullglob

e depois fazer o globbing como

ln -s /path/**/@(*foo*bar*|*bar*foo*)
    
por 03.11.2017 / 12:49
0

POSIXly:

find /path -name '.*' -prune -o -name '*foo*' -name '*bar*' -exec sh -c '
  ln -s "$@" .' sh {} +
    
por 03.11.2017 / 13:38