Tengo una lista que se ve así en un archivo llamado names.txt:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
¿Hay un script que pueda ejecutar en la Terminal que creará carpetas de cada línea en esta lista?
Tengo una lista que se ve así en un archivo llamado names.txt:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
¿Hay un script que pueda ejecutar en la Terminal que creará carpetas de cada línea en esta lista?
Respuestas:
Hay una manera fácil de ejecutar un comando para cada línea de un archivo de texto, y no requiere un script que sería excesivo para un solo comando como mkdir. Use el xargscomando así:
xargs -tI % mkdir % < names.txt
La -Iopción le dice xargsque ejecute un comando para cada línea desde STDIN. En este caso, STDIN viene de leer el names.txtarchivo con < names.txt. El %carácter es una cadena de reemplazo que xargsutiliza como marcador de posición para una línea del archivo. Esto significa que en todas partes xargsve %en el comando, %se reemplaza por una línea del archivo.
La -topción hace xargsque se imprima cada comando antes de que se ejecute. No es necesario, pero puede ser útil para problemas más complicados.
Cuando se xargsejecuta con el archivo de muestra, el resultado se ve así:
mkdir JOHN DOE mkdir JANE DOE mkdir ADAM SMITH mkdir SARAH BROWN mkdir SUSIE JOHNSON
y los mkdircomandos crean una nueva carpeta con los nombres del names.txtarchivo.