Estou tentando criar arquivos diferentes em um único diretório usando um arquivo que contém os nomes dos arquivos. Por exemplo, se o arquivo contiver
file1,file2
ele criará dois arquivos file1.md e file2.md no diretório.
Estou usando o comando, touch {$(cat file)}.md
mas isso cria um único arquivo file1,file2.md
Responder1
Você poderia substituir as vírgulas por novas linhas usando tr
e ler o resultado em uma matriz:
mapfile -t fnames < <(tr ',' '\n' < file)
touch "${fnames[@]/%/.md}"
A expansão do parâmetro ${fnames[@]/%/.md}
substitui o final de cada elemento da matriz ( %
) pelo sufixo .md
.
Responder2
Basta converter a vírgula em uma nova linha e ler os nomes dos arquivos:
sed 's/,/\n/g' file | while read fileName; do touch "$fileName".md; done
Ou:
tr , '\n' < file | while read fileName; do touch "$fileName".md; done
Responder3
Você pode tentar algo assim:
tr ',' '\n' < file | xargs -0 -I {} touch {}.md