De acordo com man bash
:
globstar
If set, the pattern ** used in a pathname expansion context will match all files and zero or more directories and sub‐
directories. If the pattern is followed by a /, only directories and subdirectories match.
Em outras palavras, se você tiver cd para o diretório com o jpgs, nenhum corresponderá porque **/97*.jpg
corresponde apenas a jpgs em um subdiretório.
Solução alternativa : use find
:
find . -name '*.jpg' -exec cp -a -t destination/ {} +
Isso localiza todos os arquivos *.jpg
a qualquer profundidade no diretório atual ( .
) e os copia para destination/
.
A opção -t dir
diz a cp
para copiar arquivos para o destino dir
. Se o seu cp
não suporta isso, existe uma solução alternativa:
find . -name '*.jpg' -exec cp -a {} destination/ \;
Isso é menos "eficiente" do que a versão anterior porque cp
é executado em todos os arquivos ( {}
) em vez de apenas uma vez para todos os nomes de arquivos que podem ser ajustados em uma linha de comando ( {} +
) .