Создать каталог для каждой строки в данном текстовом файле?

Я пытаюсь написать сценарий оболочки bash, который будет считывать данные из данного файла (как аргумента), а для каждой строки в файле – подкаталог в указанном каталоге (в качестве аргумента).

Сценарий называется studentDir а входной файл называется studentInfo.txt .
Вот две строки:

 Sara Smith Freshman Marketing James Lucas Junior Engineering 

В командной строке пользователь должен написать имя сценария, имя файла txt и каталог, в котором должны храниться новые каталоги. Я думаю, это будет так:

 $ studentDir studentInfo.txt . 

Что создаст подкаталоги в текущем каталоге.

Каталоги следует называть LLLLFF .
Например:

 SmitSa LucaJa 

(Другая информация из входного файла не требуется)

Я думаю, чтобы получить имена, которые я бы использовал:

 DIRNAME=$(cut -d' ' -f2 | cut -c1-4 ; cut -d' ' -f1 | cut -c1-2) mkdir "$DIRNAME" 

Но я не уверен, какая команда создавала бы каталог для каждой строки и как я мог бы сделать это рекурсивно для каждого из них.

3 Solutions collect form web for “Создать каталог для каждой строки в данном текстовом файле?”

Решение awk

 awk '{print substr($2,1,4) substr($1,1,2)}' file 

дает вам имена каталогов.

 mkdir $(awk '{print substr($2,1,4) substr($1,1,2)}' file) 

создает каталоги (если их не так много). Для огромных чисел (10 000+) вы можете использовать:

 awk '{print substr($2,1,4) substr($1,1,2)}' file | xargs --delimiter=\\n mkdir 

решение bash

awk не требуется, оболочка может сделать это сама:

 while read first last rest; do mkdir -p "${last:0:4}${first:0:2}"; done <file 

Вы можете использовать perl . Высказывание:

 perl -lanE 'mkdir substr(@F[1],0,4) . substr(@F[0],0,2)' studentInfo.txt 

создаст нужные каталоги.

Попробуй это:

 arr=($(cut -d ' ' -f1,2 < $*)) mkdir $(for ((i=0;i<${#arr[@]};i=i+2)); do echo ${arr[$i+1]:0:4}${arr[$i]:0:2}; done) 

Первая строка создаст массив, содержащий только первые 2 поля ввода. Каждый элемент массива будет иметь два поля (первый, последний). Вторая строка будет проходить через каждый элемент массива и подставлять каждое поле в соответствии с требованием и выводить новый каталог из каждой новой сформированной записи.

  • Понять «IFS = read -r line»?
  • Ожидание / dev / sda1, чтобы стать доступным, с таймаутом, в сценарии оболочки
  • Почему эта ошибка? Строка 26: Синтаксис Ошибка возле неожиданного токена «сделано»?
  • Создание списка доменов с помощью httpd.conf
  • Тайм-аут скриптов с использованием USBMount
  • Зеркало LFTP включает в себя - включая другие каталоги, отличные от того, что я включил
  • Запретить удаление файла даже после того, как rm -f
  • Для цикла в bash-скриптах, ставя другое значение в команду
  • Удаление строк на основе тегов для разных файлов и слияние в один файл
  • Как запустить программу, перенаправить ее вывод и отобразить вывод на экране?
  • Запустить банку при запуске во всех системах на основе * nix
  • Linux и Unix - лучшая ОС в мире.