Crie vários arquivos usando um arquivo que contém os nomes dos arquivos usando bash

Crie vários arquivos usando um arquivo que contém os nomes dos arquivos usando bash

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)}.mdmas isso cria um único arquivo file1,file2.md

Responder1

Você poderia substituir as vírgulas por novas linhas usando tre 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

informação relacionada