|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Dmitry Nedbaylo 2:466/7.104 18 Jul 2003 16:20:20 To : Slava Astashonok Subject : Re: Рекурсия -------------------------------------------------------------------------------- 18 июл 03 09:24, you wrote to me: >> Вот такая вот задачка. Hужно в шеловском скрипте рекурсивные >> функции, например если какой то файл, то все ОК, а если каталог, то >> данную функию запустить еще раз. Вообще рекурсия то работает, но как >> вывалится из нее? Break не помогает. SA> Для рекурсии необходимо конечное условие и стек параметров. Вы об этом SA> позаботились? И не пробовали ли вы решить свою задачу при помощи SA> find? А задача например такая : Есть каталог /Music с еще субдиректориями с файлами mp3. Hадо создать симв. ссылку на каждый файл mp3 в каталоге /music. С find я не мог получить basename файла. Что то вот такое : find /Music -name "*mp3" -exec ln -s {} /music/"$(basename {})" \; не катит. Создаю скрипт (кстати c return'ом я погарячился, здесь он и не надо): ======script begin==================== #!/bin/bash -x function LinkMP3 { _PWD=$1 for i in "$_PWD"/*; do if [ -f "$i" ]; then ln -s "$i" "/music/$(basename "$i")" elif [ -d "$i" ]; then LinkMP3 "$i" fi done } LinkMP3 /Music =======script end=========== Вот и все. Задача решена. Только вопросик: как это можно сделать с find? Dmitry --- GoldED+/LNX 1.1.5-30221 * Origin: ----> <none> <---- (2:466/7.104) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/27713f17f4ed.html, оценка из 5, голосов 10
|