{subfolder1}
é avaliado como {subfolder1}
, pois não há alternativas. Use subfolder1
em vez disso.
Eu estava tentando concatenar arquivos de texto em subpastas e tentei:
cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1}/book.txt > out$var
No entanto, isso não retornou nada. Então, tentei adicionar uma 'subpasta 2' não existente
cat ./{mainfolder1,mainfolder2,mainfolder3}/{subfolder1,subfolder2}/book.txt > out$var
E desta vez deu certo, concatenando os arquivos com sucesso. Por que isso acontece?
{subfolder1}
é avaliado como {subfolder1}
, pois não há alternativas. Use subfolder1
em vez disso.
Por definição, a expansão de chaves no GNU Bash requer uma expressão de seqüência ou uma série de valores separados por vírgula:
Patterns to be brace expanded take the form of an optional preamble, followed by either a series of comma-separated strings or a sequence expression between a pair of braces, followed by an optional postscript.
Você pode ler o manual para obter detalhes.
echo {subfolder1}
{subfolder1}
echo {subfolder1,subfolder2}
subfolder1 subfolder2
echo subfolder{1}
subfolder{1}
echo subfolder{1..2}
subfolder1 subfolder2
Os aparelhos só se expandirão se tiverem cadeias separadas por coma, por exemplo {abc, def} ou intervalo, por ex. {a..e} especificado entre eles.
No seu caso, você pode simplesmente escrever a subpasta1 sem colocá-la entre chaves, pois não há necessidade disso
cat ./{mainfolder1,mainfolder2,mainfolder3}/subfolder1/book.txt > out$var
Tags bash cat brace-expansion