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

Я пытаюсь написать сценарий оболочки 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 поля ввода. Каждый элемент массива будет иметь два поля (первый, последний). Вторая строка будет проходить через каждый элемент массива и подставлять каждое поле в соответствии с требованием и выводить новый каталог из каждой новой сформированной записи.

  • Извлечение каталога из stdout из wget
  • Накопительное время CPU (столбец времени в команде o / p команды ps aux)
  • сумма всех пакетов в файлах pcap
  • Помогите понять команду cut в скрипте
  • Bash: использование двухсторонних перенаправлений в сценарии оболочки
  • Как проверить несколько условий в выражении IF
  • Как получить владельца и полный путь 50 файлов большого размера для всех пользователей?
  • XFCE или чистые команды X11, немедленно переключаться без перезапуска X
  • Найти и заменить содержимое файла
  • Эхо-вывод результатов в неустойчивом порядке в BASH
  • Показать скользящее окно вывода из программы
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.