
У меня есть список, который выглядит следующим образом в файле под названием names.txt
:
JOHN DOE
JANE DOE
ADAM SMITH
SARAH BROWN
SUSIE JOHNSON
Есть ли скрипт, который можно запустить в Терминале и который создаст папки из каждой строки в этом списке?
решение1
Есть простой способ запустить команду для каждой строки текстового файла, и для этого не требуется скрипт, который был бы излишним для одной команды, например mkdir
. Используйте xargs
команду следующим образом:
xargs -tI % mkdir % < names.txt
Опция -I
указывает xargs
на выполнение команды для каждой строки из STDIN
. В этом случае STDIN получается из чтения names.txt
файла с помощью < names.txt
. %
Символ — это строка замены, которая xargs
используется в качестве заполнителя для строки из файла. Это означает, что везде, где xargs
видит %
в команде, %
заменяется строкой из файла.
Опция -t
заставляет xargs
печатать каждую команду перед ее выполнением. Это не обязательно, но может быть полезно для более сложных проблем.
При xargs
запуске с образцом файла вывод выглядит следующим образом:
mkdir ДЖОН ДОУ mkdir ДЖЕЙН ДОУ mkdir АДАМ СМИТ mkdir САРА БРАУН mkdir СЬЮЗИ ДЖОНСОН
и mkdir
команды создают новую папку с именами из names.txt
файла.