Eu tento criar uma matriz/lista que armazena nomes de arquivos dentro de uma pasta. O comando abaixo cria por motivos desconhecidos um arquivo :
. Como é possível remover :
?
> a=$(ls split*)
> echo $a
split_sam.o4433568 split_sam.o4433616 split_sam.o4441795 split-data-1:
O
$(ls split*
comando ) não criou nenhum nome de arquivo -- felizmente! Também não criou uma matriz. O que ele fez foi chamarls
com osplit*
curinga, depois colar toda a saída resultante (removendo novas linhas quels
foram adicionadas entre cada nome de arquivo e no final) e atribuir esse conglomerado à sua variável. Quando você chamouecho $a
, um pouco extra de processamento aconteceu que você não deseja: o conteúdo de sua variável foi ainda submetido à divisão em espaço em branco ($IFS) e expansões curinga. Você teve sorte por não ter nenhum arquivo nomeado, por exemplo,split space file
ousplit more*
!A raiz da sua confusão é que você, de fato, tem um arquivo nomeado
split-data-1:
nesse diretório els
está feliz em devolvê-lo a você.O que você quer fazer, em vez disso, é encontrar um curinga que se adapte aos arquivos que você realmente deseja e usar uma simples atribuição de matriz:
ou
como você escreveu originalmente, que ainda incluirá esse
split-data-1:
arquivo.Você pode então iterar sobre os arquivos ou operá-los como um todo:
ou