[linux-audio-user] batch creation of symlinks

Thomas Ilnseher illth at gmx.de
Sat Jul 8 17:15:23 EDT 2006


Emiliano Grilli wrote:
> sabato, 08 luglio 2006 alle 22:15:23, Hans ha scritto:
>   
>> Hello everyone,
>>
>> Maybe not entirely related to music, so forgive me for that. I have been 
>> busy with the following problem for sometime now and I can't seem to 
>> figure it out.
>>
>> I want to batch create symlinks in the main directory, of all the files 
>> in subdirectories. E.g.
>>
>> $ls
>> dir1
>> dir2
>> dir3
>> file1.mp3 -> .dir1/file1.mp3
>> file2.mp3 -> .dir1/file2.mp3
>> file3.mp3 -> .dir2/file3.mp3
>> file4.mp3 -> .dir2/file4.mp3
>> file5.mp3 -> .dir3/file5.mp3
>> file6.mp3 -> .dir3/file6.mp3
>>
>> I tried various shell thingies like:
>>
>> for i in *.mp3; do ln -s --target-directory=../ $i $i; done
>>
>> in the subdir, or
>>
>> for i in ./dir1/*.mp3; do ln -s $i $i;done
>>     
>
> This one works for me:
>
> for i in `ls dir1/*.mp3`; do ln -s $i `basename $i`; done
>   

this shell script should also do the job:

#!/bin/bash
find -name \*.mp3 | while read name; do
 name="`echo "$name"|sed 's/^\.\///'`"
 if ! echo $name|grep "/"> /dev/null; then
  continue
 fi
 ln -s "$name" "` basename "$name"`"
done

>   
>> with various variations, but it seems impossible to do it this way. What 
>> is the right way to go about this? I know very little Python and some 
>> bash scripting. I want to figure the solution out myself, so any 
>> suggestions/hints related to Python/bash are more than welcome.
>>
>> Cheers,
>>
>> Hans
>>     
>
> HTH
>
> Ciao
>   




More information about the Linux-audio-user mailing list