В моем скрипте bash я использую find для фильтрации файлов двух типов, давайте Students.txt и teacher.txt .
Порядок важнее всегона первом месте, а затем сначала студентов1, а затем учителей1 , студентов2, а затем учителей2 , студентовN, а затем учителейN .
Следующий скрипт сортирует самый старыйпервый и самый последний длится. Тем не менее, пока что не рассматривает сначала учеников1, а затем учителей1, учеников2, а затем учителей2, учениковN, а затем учителейN. Что вы предлагаете?
#!/bin/bash
THE_PATH="THE_PATH"
while IFS='' read -r -d ' ' mtime && IFS='' read -r -d '' filename
do
echo "processing file \"$filename\""
done < <(find "$THE_PATH" -maxdepth 1 -type f \( -iname "*students*.txt" -o -iname "*teachers*.txt" \) -printf '%T@ %p\0' | sort -zn)
Файлы, которые у меня есть:
Modified Time File Name
oct 22 2019 student1010.txt
oct 22 2019 teacher2000.txt
oct 21 2019 teacher1000.txt
oct 15 2019 teacher3000.txt
oct 15 2019 student3030.txt
oct 20 2019 student4040.txt
Вывод, который я хочу:
Modified Time File Name
oct 15 2019 student3030.txt
oct 15 2019 teacher3000.txt
oct 20 2019 student4040.txt
oct 21 2019 teacher1000.txt
oct 22 2019 student1010.txt
oct 22 2019 teacher2000.txt
Я имею в виду следующие решения НО , ожидая, если это будет достигнуто с приведенным выше примером:
- Создайте массив, используя команду find в качестве замены процесса дляцикл для файлов student.txt;
- Создайте еще один массив, используя команду find в качестве подстановки процесса для цикла для файлов teacher.txt;
- Наконец, создайте еще один массив из созданного вышедва массива при чтении одного элемента из каждого за раз.