LINUX.ORG.RU

создать каталоги используя вывод tree


0

1

Алоха всем.
Скопировали вывод tree с вындовской машины и отправили.
Стоит задача создать такое же дерево каталогов.
Пытаюсь написать скрипт на баш, но в голову никак не приходит мысль как подключить туда вывод tree и что б mkdir создавал каталоги именно в этом порядке и с такими именами.

А я уже о таком думал, в венде tree всё такой же, с псевдографикой?символами?
Предлагаю отгрепать самый верхний уровень каталогов, создать их, затем отгрепать в файлик номера строк каталогов второго уровня и так далее и затем с этими строками замутить что-то

adriano32 ★★★
()

Имхо, решить проще всего скриптом на руби/питоне.

Каждую строку преобразуешь из вида «│ │ │ │ │ ├───December 2009» в пару [число символов перед именем каталога, имя каталога]

Потом скармливаешь рекурсивному алгоритму, который будет создавать каталоги и погружаться/всплывать по стеку, в зависимости от того больше ли число текущей пары числа предыдущей пары, или меньше.

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

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

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

Что бы облегчить работу, решил создать папки внутри каждой три папки с одинаоквыми названиями.
Ругайте:
#осторожно быдлокод

!/bin/bash
aLen=${#a[@]}
com1="mkdir 9520"
com2="mkdir 95200"
for((i=0;i<10; i++))
do
comfin0=`$com2"$i"`
comfin=`$com2"$i"/Diger`
comfin1=`$com2"$i"/ETIden`
comfin2=`$com2"$i"/PESden`
done
for((i=10;i<100; i++))
do
comfin0=`$com1"$i"`
comfin=`$com1"$i"/Diger`
comfin1=`$com1"$i"/ETIden`
comfin2=`$com1"$i"/PESden`
done

alikhantara
() автор топика

http://paste.pocoo.org/show/459321/
Использование: iconv -f cp866 -t utf8 file.tree | wintree2dir.pl

Работайте с осторожностью. У меня, вроде бы, создаёт правильное дерево директорий (могу заtarить).

AITap ★★★★★
()

Напиши им скрипт, который проходится по каталогам и делает записи в виде:

/firstdir
/firstdir/seconddir
/firstdir/thirddir

и скорми файлик скрипту, который пробегает по каждой строчке и создает директорию.

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

> Напиши им скрипт, который проходится по каталогам и делает записи в виде:

/firstdir

/firstdir/seconddir


/firstdir/thirddir



Реализация find для бедных. :D

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

Вот можно и такой быдлокод, по кол-ву пробелов в начале строки:

D[1]='/tmp' 
sed -e '1,3d' -e 's|│||g' -e ':a;s|^\(/*\)  |\1/|;ta' -e 's|[├└]───|/|' -e 's|\r||' /tmp/tree-lor.txt  |\
while read A ; do
   IFS='/' 
   B=( $A )
   N=${#B[*]}
   D[$N]=${B[N-1]}
       for ((i=1;i<=N;i++)) ; do echo -n "${D[i]}/"; done ; echo
done

А результат можно кормить mkdir -p.

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