Главная страница


ru.linux

 
 - RU.LINUX ---------------------------------------------------------------------
 From : Dmitry Nedbaylo                      2:5085/75.128  18 Jul 2003  15: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: -= :)) Солнечный Воронеж.Net =- (2:5085/75.128)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 Re: Рекурсия   Dmitry Nedbaylo   18 Jul 2003 15:20:20 
Архивное /ru.linux/4014eed700a6.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional