
Eu tenho uma lista parecida com esta em um arquivo chamado names.txt
:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
Existe um script que eu possa executar no Terminal que criará pastas a partir de cada linha desta lista?
Responder1
Existe uma maneira fácil de executar um comando para cada linha de um arquivo de texto e não requer um script que seria um exagero para um único comando como mkdir
. Use o xargs
comando assim:
xargs -tI % mkdir % < names.txt
A -I
opção diz xargs
para executar um comando para cada linha do arquivo STDIN
. Nesse caso, STDIN vem da leitura do names.txt
arquivo com extensão < names.txt
. O %
caractere é uma string de substituição xargs
usada como espaço reservado para uma linha do arquivo. Isso significa que todos os lugares xargs
vistos %
no comando %
serão substituídos por uma linha do arquivo.
A -t
opção faz com xargs
que cada comando seja impresso antes de ser executado. Não é necessário, mas pode ser útil para problemas mais complicados.
Quando xargs
executado com o arquivo de amostra, a saída será semelhante a esta:
mkdir JOHN DOE mkdir JANE DOE mkdir ADAM SMITH mkdir SARAH BROWN mkdir SUSIE JOHNSON
e os mkdir
comandos criam uma nova pasta com os nomes do names.txt
arquivo.