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 xargs
comando así:
xargs -tI % mkdir % < names.txt
La -I
opción le dice xargs
que ejecute un comando para cada línea desde STDIN
. En este caso, STDIN viene de leer el names.txt
archivo con < names.txt
. El %
carácter es una cadena de reemplazo que xargs
utiliza como marcador de posición para una línea del archivo. Esto significa que en todas partes xargs
ve %
en el comando, %
se reemplaza por una línea del archivo.
La -t
opción hace xargs
que se imprima cada comando antes de que se ejecute. No es necesario, pero puede ser útil para problemas más complicados.
Cuando se xargs
ejecuta 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 mkdir
comandos crean una nueva carpeta con los nombres del names.txt
archivo.