URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 7673
[ Назад ]

Исходное сообщение
"Требуется помощь со скриптом"

Отправлено padonak , 28-Окт-08 16:37 
Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
Я представляю алгоритм решения, но как доходит до реализации, то ничерта не получается.
Препод в универе сказал что его можно выполнить в 4 строчки, я смог написать только одну.

Содержание

Сообщения в этом обсуждении
"Требуется помощь со скриптом"
Отправлено NuINu , 28-Окт-08 16:48 
>Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
>Я представляю алгоритм решения, но как доходит до реализации, то ничерта не
>получается.
>Препод в универе сказал что его можно выполнить в 4 строчки, я
>смог написать только одну.

я тоже не силен в арифметике, но мне кажеться тебе осталось еще 3!


"Требуется помощь со скриптом"
Отправлено padonak , 28-Окт-08 16:58 
>>Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
>>Я представляю алгоритм решения, но как доходит до реализации, то ничерта не
>>получается.
>>Препод в универе сказал что его можно выполнить в 4 строчки, я
>>смог написать только одну.
>
>я тоже не силен в арифметике, но мне кажеться тебе осталось еще
>3!

а я не силен в программирование((


"Требуется помощь со скриптом"
Отправлено vic , 28-Окт-08 17:23 
это делается в 1 строку.
препод плохо знает свой предмет.

"может, он просто задачи ставить не умеет"
Отправлено Andrey Mitrofanov , 28-Окт-08 17:59 
>это делается в 1 строку.
>препод плохо знает свой предмет.

С другой стороны... На баше, без ls, без coreutils... без вообще внешних програм!.. с экранированием... да с рекурсией!..

Ну, на твёрдую пятёрку и "на лекции можете не ходить" - может потянуть. :))))

$SUBJ ?

...а переписать GNU find(utils?!) _полностью_ на GNU же bash-е -- это прямо _диплом_! %-O

---Редакция ждёт ваших предложений с темами "find на bash-е" для кандидатской и доктороской диссертаций!
...Ээээ... "Философские аспекты само-отображения пространства эккторров на континиуме дискретных оп-пераций над файловой системой в подмножестве УНИХ-подобных ОС на примере переписывания подневольными студентами"... Гм... .... ... Да! О чём это я??


"может, он просто задачи ставить не умеет"
Отправлено vic , 28-Окт-08 18:25 
>...Ээээ... "Философские аспекты само-отображения пространства эккторров на континиуме дискретных оп-пераций над файловой
>системой в подмножестве УНИХ-подобных ОС на примере переписывания подневольными студентами"... Гм...
>.... ... Да! О чём это я??

ну вот трехстрочный коммент к решению в одну строку уже есть, осталось решение и мона сдавать =)


"преподу Требуется помощь"
Отправлено Andrey Mitrofanov , 28-Окт-08 17:10 
>Препод в универе сказал что его можно выполнить в 4 строчки, я
>смог написать только одну.

Здесь, канешшнаа, студентам не подают, но...

Скажи своему преподу, что на ОпенНЕТ сказали, что три строчки и баш - лишние --
http:/search.shtml?words=find+AND+exec&sort=score&exclude=&r...
http:/search.shtml?words=find+AND+xargs&config=htdig_forum&r...
-- а также советовали получиться. В районе `info find`, например.

За такую _ценную_ информацию, трояк тебе обеспечен. :-P ...наверное.

ЗЫЖ Гм, хотя если с экранированием самоупражняться, то 4 строк может и не хватить... Но! Строки-то бывают длииииииииинные... %)))))


"помощь близко!"
Отправлено Andrey Mitrofanov , 28-Окт-08 18:47 
$ cat ./find.sh
#!/bin/bash
find $1 -exec /bin/bash -c "${*#$1} {}" \;

$ ./find.sh . echo
.
./find.sh
$ ./find.sh . ls -ld
drwxr-xr-x 2 abm abm 192 2008-10-28 18:38 .
-rwxr--r-- 1 abm abm 56 2008-10-28 18:38 ./find.sh
$ ./find.sh . stat -c \"%s %n\"
192 ./
56 ./find.sh
$ ./find.sh . true
$ ./find.sh . false
$ _

TODO: рекурсия, экранирование, #!/usr/bin/end find, заменить find bash-ем... философские аспекты, опять же!


"я-то сделал, но не всё"
Отправлено Andrey Mitrofanov , 29-Окт-08 15:01 
>ЗЫЖ Гм, хотя если с экранированием самоупражняться, то 4 строк может и
>не хватить... Но! Строки-то бывают длииииииииинные... %)))))

Только bash, без внешних "экзешников", с рекурсией, с экранированием...

$ wc ./find.sh
10  46 246 ./find.sh
$ ./find.sh . echo
./dir1/find.sh000
./dir2/test-file
./find.sh
$ ./find.sh . ls -l
-r-xr--r-- 1 abm abm 56 2008-10-28 18:38 ./dir1/find.sh000
-rw-r--r-- 1 abm abm 0 2008-10-29 14:30 ./dir2/test-file
-rwxr--r-- 1 abm abm 246 2008-10-29 14:21 ./find.sh
$ ./find.sh . stat -c "%3s %n"
56 ./dir1/find.sh000
  0 ./dir2/test-file
246 ./find.sh
$ ./find.sh . true
$ _

Экранирование /[ ?*]/ в именах файлов - кривит. Пожалуй, продолжу изучение "философских аспектов...", если здоровья хватит, простветления подожду.

PS: Ага, иссходика не показал. Плагиата боюсь.
PPS: а ещё вдруг - $команда = код на баше... да создающий файлы и поддиректории... %)


"я-то сделал, но не всё"
Отправлено padonak , 02-Ноя-08 12:25 
Всем спасибо, у меня такой вариант получился:

#!/bin/bash
if [ "$2" == "" -o "$1" == "" ]; then echo "Usage: exec.sh path
\"command\" " ; exit ; fi
for i in `find $i -type d` ; do cd $1 ; $2 ; done;

Но призапуске скрипта результат у нас повторяется т.е. например пишу
./script.sh /windows ls -l

а в результате получаем

C  D  E  F
C  D  E  F
C  D  E  F
C  D  E  F
C  D  E  F
C  D  E  F

т.е. ерзультат повторяется много раз, в чем ошибка?


"я-то сделал, но не всё"
Отправлено angra , 03-Ноя-08 00:41 
>т.е. ерзультат повторяется много раз, в чем ошибка?

Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на другом поприще.



"я-то сделал, но не всё"
Отправлено Keeper , 03-Ноя-08 01:01 
>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>другом поприще.

Ладно, нарушу традицию, подам бедному студенту.
Как раз три строчки, из них одна полезная.

start_dir=$1
command_to_run=$2
find $start_dir -type d -exec $command_to_run \;


"я-то сделал, но не всё"
Отправлено padonak , 03-Ноя-08 10:57 
>>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>>другом поприще.
>
>Ладно, нарушу традицию, подам бедному студенту.
>Как раз три строчки, из них одна полезная.
>
>start_dir=$1
>command_to_run=$2
>find $start_dir -type d -exec $command_to_run \;

Спасибо за помощь


"я-то сделал, но не всё"
Отправлено padonak , 03-Ноя-08 10:25 
>>т.е. ерзультат повторяется много раз, в чем ошибка?
>
>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>другом поприще.

Я не стремлюсь им стать)))


"я-то сделал, но не всё"
Отправлено vertur , 17-Ноя-08 03:25 
>>>т.е. ерзультат повторяется много раз, в чем ошибка?
>>
>>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>>другом поприще.
>
>Я не стремлюсь им стать)))

Тогда забейте на задание.


"Требуется помощь со скриптом"
Отправлено vertur , 17-Ноя-08 03:20 
>Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
>Я представляю алгоритм решения, но как доходит до реализации, то ничерта не
>получается.
>Препод в универе сказал что его можно выполнить в 4 строчки, я
>смог написать только одну.

Добавте еще 3 строки каментов.


"Требуется помощь со скриптом"
Отправлено vic , 17-Ноя-08 14:03 
>Добавте еще 3 строки каментов.

// Некропостинг это плохо
// Читать ответы других, чтобы не повторять ответы
// Некропостинг с повторами - дважды плохо =)


"Требуется помощь со скриптом"
Отправлено vertur , 17-Ноя-08 15:41 
>>Добавте еще 3 строки каментов.
>
>// Некропостинг это плохо
>// Читать ответы других, чтобы не повторять ответы
>// Некропостинг с повторами - дважды плохо =)

А комментарии на русском это неуважение буржуйских коллег.


"Требуется помощь со скриптом"
Отправлено vic , 17-Ноя-08 16:05 
>>>Добавте еще 3 строки каментов.
>>
>>// Некропостинг это плохо
>>// Читать ответы других, чтобы не повторять ответы
>>// Некропостинг с повторами - дважды плохо =)
>
>А комментарии на русском это неуважение буржуйских коллег.

Тема на русском, на русском форуме, вот комментарии и были локализованы ;)


"Требуется помощь со скриптом"
Отправлено angra , 17-Ноя-08 16:22 
А кто сказал что это комментарии? Не С/С++ единым живы, есть и другие языки :)