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)}.md
pero esto crea un único archivo file1,file2.md
Respuesta1
Puede reemplazar las comas con nuevas líneas usando tr
y 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