Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
Я представляю алгоритм решения, но как доходит до реализации, то ничерта не получается.
Препод в универе сказал что его можно выполнить в 4 строчки, я смог написать только одну.
>Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
>Я представляю алгоритм решения, но как доходит до реализации, то ничерта не
>получается.
>Препод в универе сказал что его можно выполнить в 4 строчки, я
>смог написать только одну.я тоже не силен в арифметике, но мне кажеться тебе осталось еще 3!
>>Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
>>Я представляю алгоритм решения, но как доходит до реализации, то ничерта не
>>получается.
>>Препод в универе сказал что его можно выполнить в 4 строчки, я
>>смог написать только одну.
>
>я тоже не силен в арифметике, но мне кажеться тебе осталось еще
>3!а я не силен в программирование((
это делается в 1 строку.
препод плохо знает свой предмет.
>это делается в 1 строку.
>препод плохо знает свой предмет.С другой стороны... На баше, без ls, без coreutils... без вообще внешних програм!.. с экранированием... да с рекурсией!..
Ну, на твёрдую пятёрку и "на лекции можете не ходить" - может потянуть. :))))
$SUBJ ?
...а переписать GNU find(utils?!) _полностью_ на GNU же bash-е -- это прямо _диплом_! %-O
---Редакция ждёт ваших предложений с темами "find на bash-е" для кандидатской и доктороской диссертаций!
...Ээээ... "Философские аспекты само-отображения пространства эккторров на континиуме дискретных оп-пераций над файловой системой в подмножестве УНИХ-подобных ОС на примере переписывания подневольными студентами"... Гм... .... ... Да! О чём это я??
>...Ээээ... "Философские аспекты само-отображения пространства эккторров на континиуме дискретных оп-пераций над файловой
>системой в подмножестве УНИХ-подобных ОС на примере переписывания подневольными студентами"... Гм...
>.... ... Да! О чём это я??ну вот трехстрочный коммент к решению в одну строку уже есть, осталось решение и мона сдавать =)
>Препод в универе сказал что его можно выполнить в 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 строк может и не хватить... Но! Строки-то бывают длииииииииинные... %)))))
$ 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-ем... философские аспекты, опять же!
>ЗЫЖ Гм, хотя если с экранированием самоупражняться, то 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: а ещё вдруг - $команда = код на баше... да создающий файлы и поддиректории... %)
Всем спасибо, у меня такой вариант получился:#!/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т.е. ерзультат повторяется много раз, в чем ошибка?
>т.е. ерзультат повторяется много раз, в чем ошибка?Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на другом поприще.
>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>другом поприще.Ладно, нарушу традицию, подам бедному студенту.
Как раз три строчки, из них одна полезная.start_dir=$1
command_to_run=$2
find $start_dir -type d -exec $command_to_run \;
>>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>>другом поприще.
>
>Ладно, нарушу традицию, подам бедному студенту.
>Как раз три строчки, из них одна полезная.
>
>start_dir=$1
>command_to_run=$2
>find $start_dir -type d -exec $command_to_run \;Спасибо за помощь
>>т.е. ерзультат повторяется много раз, в чем ошибка?
>
>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>другом поприще.Я не стремлюсь им стать)))
>>>т.е. ерзультат повторяется много раз, в чем ошибка?
>>
>>Не обижайтесь, но в ДНК, программистом вам не быть, ищите себя на
>>другом поприще.
>
>Я не стремлюсь им стать)))Тогда забейте на задание.
>Требуется скрипт на баш. Задача такова:Нужно выполнить заданную команду в заданной директории и всех поддиректориях. Исходными данными являются <директория> где идет поиск и <команда> которая выполняется.
>Я представляю алгоритм решения, но как доходит до реализации, то ничерта не
>получается.
>Препод в универе сказал что его можно выполнить в 4 строчки, я
>смог написать только одну.Добавте еще 3 строки каментов.
>Добавте еще 3 строки каментов.// Некропостинг это плохо
// Читать ответы других, чтобы не повторять ответы
// Некропостинг с повторами - дважды плохо =)
>>Добавте еще 3 строки каментов.
>
>// Некропостинг это плохо
>// Читать ответы других, чтобы не повторять ответы
>// Некропостинг с повторами - дважды плохо =)А комментарии на русском это неуважение буржуйских коллег.
>>>Добавте еще 3 строки каментов.
>>
>>// Некропостинг это плохо
>>// Читать ответы других, чтобы не повторять ответы
>>// Некропостинг с повторами - дважды плохо =)
>
>А комментарии на русском это неуважение буржуйских коллег.Тема на русском, на русском форуме, вот комментарии и были локализованы ;)
А кто сказал что это комментарии? Не С/С++ единым живы, есть и другие языки :)