Cree varios archivos usando un archivo que contenga los nombres de los archivos usando bash

Cree varios archivos usando un archivo que contenga los nombres de los archivos usando bash

Estoy intentando crear diferentes archivos en un solo directorio usando un archivo que contiene los nombres de los archivos. Por ejemplo, si el archivo contiene

file1,file2

Creará dos archivos file1.md y file2.md en el directorio.

Estoy usando el comando touch {$(cat file)}.mdpero esto crea un único archivo file1,file2.md

Respuesta1

Puede reemplazar las comas con nuevas líneas usando try leer el resultado en una matriz:

mapfile -t fnames < <(tr ',' '\n' < file)
touch "${fnames[@]/%/.md}"

La expansión del parámetro ${fnames[@]/%/.md}reemplaza el final de cada elemento de la matriz ( %) con el sufijo .md.

Respuesta2

Simplemente convierta la coma en una nueva línea y luego lea los nombres de los archivos:

sed 's/,/\n/g' file | while read fileName; do touch "$fileName".md; done

O:

tr , '\n' < file | while read fileName; do touch "$fileName".md; done

Respuesta3

Puedes probar algo como esto:

tr ',' '\n' < file | xargs -0 -I {} touch {}.md

información relacionada