powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Перебрать рекурсивно директории
25 сообщений из 25, страница 1 из 1
Перебрать рекурсивно директории
    #34546667
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
#!/bin/bash

FILES=`ls -R | grep "/"`
echo -e $FILES "\n"
for i in $FILES; do

    echo $i
done

Такая конструкция режет имена с пробелами:

автор
./123: ./asd sda:

./123:
./asd
sda:


Как сделать что бы не резалось?
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34546697
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
например

IFS=""
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34546713
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--например

IFS=""

Супер! А что это за флаги IFS, OFS?
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34546738
Osya-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
field separator
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34546775
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только хороший тон - их обратно восстанавливать не забывать. Мало ли что дальше в скрипте делаться будет.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34546914
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мб man find?
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547000
Alex Roudnev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А дустом не пробовали - файндом то бишь??
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547300
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое напечатать: tree -d -f -i
религия не позволяет???
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547304
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--только хороший тон - их обратно восстанавливать не забывать. Мало ли что дальше в скрипте делаться будет.

Хороший тон - их вааще не трогать...
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547440
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik_xХороший тон - их вааще не трогать...
да ладно Если дадены Аллахом - можно юзать, прием-то стандартный. К тому же там, как делал Akh - именно они и уместны. Хотя find конечно гораздо удобнее.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547445
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот tree мне бы религия не позволила: далеко не всегда и не у всех оно установлено, мне, например, оно не нужно.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547527
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nik_xТакое напечатать: tree -d -f -i
религия не позволяет???

Надобно, как заметил --null--, специально доставлять. У меня тож нет.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547529
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DocAlА мб man find?

Один фиг
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547532
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Osya-field separator

Фенкс. Как я понял, глобальный на bash.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547610
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--например

IFS=""

Блин. Оказалось, он все подряд склеивает в одну строку, т.е.:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#!/bin/bash

IFS_SAVE=${IFS}
IFS=""
FILES=`ls -R | grep  "/" | awk -F: '{print $1}'`
FILES=${FILES}
echo -e "Переменная содержит:" ${FILES} "\n"
for i in ${FILES} "."; do

    echo "Следующая итерация переменной:" ${i}:
done
IFS=${IFS_SAVE}

Выдает:
автор

Переменная содержит: ./123
./asd sda
./dsfsd

Следующая итерация переменной: ./123
./asd sda
./dsfsd:
Следующая итерация переменной: .:



Надо катологи разделить по переносу строки.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547656
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извиняюсь - я ошибся

Вот как следует сделать

IFS="
"


это если данный пример принципиален. А ваще find действительно гораздо интереснее.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547674
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--Извиняюсь - я ошибся

Вот как следует сделать

IFS="
"


это если данный пример принципиален. А ваще find действительно гораздо интереснее.

Фенкс, уже сам допетрил . :)

Только, теперь что-то внутри цикла (это была приведена урезанная версия) развалилось. :) Буду чинить.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547682
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне вот не нравится, что у Вас собирается все в одну большую переменную, если каталогов много - может быть плохо

Я бы осмелился предложить так:
Код: plaintext
1.
2.
3.
4.
5.
6.
#!/bin/sh
ls -R | grep '/' |
while read i
do
    echo "var= $i"
done

да и в чем проблема с find-ом? Он отлично заменит данный цикл и отработает быстрее, скорее всего.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34547743
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--мне вот не нравится, что у Вас собирается все в одну большую переменную, если каталогов много - может быть плохо

Я бы осмелился предложить так:
Код: plaintext
1.
2.
3.
4.
5.
6.
#!/bin/sh
ls -R | grep '/' |
while read i
do
    echo "var= $i"
done

да и в чем проблема с find-ом? Он отлично заменит данный цикл и отработает быстрее, скорее всего.

У меня нет большого опыта работы с bash, а скрипты иногда приходиться писать. Поэтому использую те средства, которые знаю или до которых догадываюсь (нахожу) в первую очередь.

За пример спасибо. Попробую через него, так как выглядит все гораздо красивей, рациональней и корректней.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34551732
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--null--мне вот не нравится, что у Вас собирается все в одну большую переменную, если каталогов много - может быть плохо

Я бы осмелился предложить так:
Код: plaintext
1.
2.
3.
4.
5.
6.
#!/bin/sh
ls -R | grep '/' |
while read i
do
    echo "var= $i"
done

да и в чем проблема с find-ом? Он отлично заменит данный цикл и отработает быстрее, скорее всего.

Все изменения внутри while стали локальными. Такой ход действий в данном случае не допустим.
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34552417
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бедняга, ты всё мучаешься...

Попробуй что-нибудь вроде:

for name in `ls -R -1 | grep / | replace ' ' ^ -- | replace : '' --`
do
echo $name | replace ^ ' ' --
done

ЗЫ: Извини, первое, что в голову пришло...
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34552758
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh DocAlА мб man find?

Один фигА где его нет в базовых утилитах?
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34552874
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
согласен с тем, что лучше find
но если продолжать извраты -то вот
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
#!/bin/sh

IFS="
"
set `ls -R | grep '/' |
while read i
do
 echo $i
done`


while [ "$#" -ne  0  ]
do
echo $ 1 
shift || break
done
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34552877
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в переменных $1..
окажутся имена каталогов и можно делать с ними што хошь
...
Рейтинг: 0 / 0
Перебрать рекурсивно директории
    #34559743
A. Fig Lee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а че вы все грепаете на слеш.

Код: plaintext
test -d file/or/directory
- че уже отменили?
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Перебрать рекурсивно директории
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]