Coloque o (s) nome (s) da variável em chaves, por exemplo:
echo ${path}*${dir}
Me desculpe se isso é muito simples ou foi coberto antes ... mas espero que alguém aqui possa ajudar. Não consigo descobrir como expandir o curinga * em um nome de caminho, a menos que seja seguido por um espaço. Por exemplo,
echo $path* $dir
rendimentos
/Data0001 /subfolder
que é o que eu quero, mas sem o espaço. Se eu tentar tirar o espaço com
echo $path*$dir
Eu recebo
/Data*/subfolder
Alguma dica de como expandir * sem o espaço em branco?
Obrigado.
Coloque o (s) nome (s) da variável em chaves, por exemplo:
echo ${path}*${dir}
Ele está fazendo correspondência de padrões na palavra inteira, não apenas na ${path}*
part - então se $ path era "/" e $ dir era "/ subdirname", ele procuraria correspondências para /*/subdirname
, que essencialmente procura diretórios em / que contenham subdiretórios denominados subdirename. Se você quiser encontrar diretórios que ainda não contêm / subdirname, você deve deixar isso fora de padrão e adicioná-lo posteriormente. Veja um exemplo que armazena as correspondências em uma matriz e adiciona o subdiretório:
path="/"
dir="/subdirname"
matchedDirs=("$path"*)
echo "${matchedDirs[@]/%/$dir}"
Se a construção final for difícil de entender, a parte [@]
significa "todos os elementos da matriz, cada um tratado como uma palavra separada", e /%/$dir
significa "substituir a extremidade (de cada elemento) por $ dir "(ou seja, anexar $ dir a cada elemento da matriz).
Altere para
dir=/Data sub=subfolder
echo $dir*/$sub
.
dir=/Data* sub=subfolder
echo $dir/$sub
também funcionaria