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*)
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
POSIXly:
find /path -name '.*' -prune -o -name '*foo*' -name '*bar*' -exec sh -c '
ln -s "$@" .' sh {} +
Tags command-line bash wildcards linux ln