
Tengo una lista que se parece a esta en un archivo llamado names.txt
:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
¿Existe algún script que pueda ejecutar en la Terminal y que cree carpetas a partir de cada línea de esta lista?
Respuesta1
Existe una forma sencilla de ejecutar un comando para cada línea de un archivo de texto y no requiere una secuencia de comandos que sería excesiva para un solo comando como mkdir
. Utilice el xargs
comando como este:
xargs -tI % mkdir % < names.txt
La -I
opción indica xargs
que se ejecute un comando para cada línea de STDIN
. En este caso, STDIN proviene de la lectura del names.txt
archivo con extensión < names.txt
. El %
carácter es una cadena de reemplazo que xargs
se utiliza como marcador de posición para una línea del archivo. Esto significa que todo lo xargs
que se 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 ejecutarlo. No es necesario, pero puede resultar útil para problemas más complicados.
Cuando xargs
se ejecuta con el archivo de muestra, el resultado se ve así:
mkdir JUAN 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.