LINUX.ORG.RU

Помогите новичку


0

1

Здравствуйте, пытаюсь написать скрипт на баш который будет создавать некий трёхмерный массив. Мне нужно отобразить в массиве файловое дерево с информацией о каждом файле. То-есть один уровень массива это название директории, второй - название файла и третий свойства файла. В голове я себе как-то построил эту структуру а вот написать, пока, не очень получилось.
Скрипт получает директорию как аргумент от пользователя и именно от неё и глубже уже пляшет.
Для начала я выделил интересующую меня информацию (ls -Rl $1 | grep '^[\.-]').
Получил некое дерево с которым можно, вроде бы, дальше работать но в этот момент мозги разбрелись...
Толкните меня кто нибудь, помогите собрать мозги в кучку...

>> трёхмерный массив

на баш

У меня для тебя плохие новости.

ls -Rl $1 | grep '^[\.-]'

Получил некое дерево

Серьёзно? Видимо, я как-то не так понимаю термин «дерево»...

GotF ★★★★★
()

не изобретайте велосипед. Храните всё в одномерном ассоциативном массиве:

declare -A fs

присваивание/создание файла

fs[$file_name]=new_file

чтение

old_file=${fs[$file_name]}

А свойства файла храните вместе с содержимым. Это будет одномерный ассоциативный массив одномерных массивов. Т.е.

content=${old_file[1]}

file_type=${old_file[0]}

Да, тормозить на баше это всё будет неподеццки.

drBatty ★★
()

Если тебя это не заставляет делать злой тупой старпёр в университете или на работе, то лучше не пытайся, рассмотри другие средства. bash для такого не предназначен.

anonymous
()
Ответ на: комментарий от anonymous

>Если тебя это не заставляет делать злой тупой старпёр в университете или на работе, то лучше не пытайся, рассмотри другие средства. bash для такого не предназначен.

Например перл?

bronweg
() автор топика
Ответ на: комментарий от bronweg

нет, например питон. Перл уже труп.

anonymous
()
Ответ на: комментарий от bronweg

>На перле тоже будет тормозить?

[quote]Перл — это тот же brainfuck, только автор его, почему-то, воспринимает серьезно. Может, конечно, это он так издевается, и тащится от того, что мир подхватил его версию brainfuck и строчит на нем да фанатеет... — ЛОР[/quote]

тут уже про Python сказали. Не стоит забывать и о С/С++. А перловку оставьте...

drBatty ★★
()
Ответ на: комментарий от bronweg

почитай предыдущие ответы и убедись, что перл подходит для этого лучше всего ;)

arsi ★★★★★
()

не пойму, зачем здесь трехмерный массив?

xydo ★★
()

>Помогите новичку

Банить надо за такие не информативные названия топика.

Siado ★★★★★
()

А зачем здесь трехмерный массив? Это же получится жутко разреженная матрица...

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от mashina

Это и есть трехмерный разреженный массив, который будет занимать кучу памяти даже при использовании спец. средств работы с разреженными матрицами.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Это всего лишь конечная форма записи за которой может скрываться что угодно. Например, { хэш: иия директории -> список }, где список состоит из кортежей (имя файла, хэш атрибутов). Никакого здесь разряженного массива куевой хучи элементов нет.

mashina ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.