Need BASH script help
Scott Bicknell
scotbicknel at cox.net
Thu May 15 01:13:35 UTC 2008
On Wednesday 14 May 2008 6:12:12 pm Scott Bicknell wrote:
> On Wednesday 14 May 2008 6:09:30 pm Scott Bicknell wrote:
> > On Wednesday 14 May 2008 5:25:00 pm Joel Oliver wrote:
> > > Hello, I was wondering if there's anyone who can help me
> > > with my problem.
> > >
> > > OK.... I have a huge directory of movies (1200+) all in
> > > one directory and I wanted to "divide" them up... Smarty
> > > me comes up with a great idea... symbolic links... Now it
> > > would take forever to go into the terminal and ln -s every
> > > file so I discovered konqueror does this with a drag and
> > > drop... Great! So dragging and dropping away I sorted all
> > > my movies alphebetically, by release date, by
> > > actors/actresses... All was well except one BIG thing...
> > >
> > > I play them on my neuros OSD and mount them via NFS.
> > > Konqueror really botched this as it created absolute path
> > > links and I needed relative paths....like it did this:
> > >
> > > my movies are in /big/sda/moviesa/
> > >
> > > my OSD mounts this in /mnt/media/nfs
> > >
> > > so the path after the mount is /mnt/media/nfs/sda/moviesa
> > >
> > > my sorted symbolic links are in
> > > /big/sda/Sorted/Alphebetical/A/movie.avi and these are
> > > linked like /big/sda/moviesa/movie.avi which is great on
> > > the computer but the path is wrong on the OSD. I thought
> > > I could 'trick' the OSD with a symbolic link right in the
> > > root of the drive, but this area is solid state and won't
> > > let me write to it... So the big ?:
> > >
> > > Is there an easy recursive way to recurse through a whole
> > > directory structure, chop off the /big/sda and replace it
> > > with a relative ../../..
> > >
> > > If I link it as ../../../moviesa/movie.avi it works on
> > > both machines.... But that's alot of files to do
> > > one-by-one and I'm kinda stumped...
> > >
> > > Any quick ideas? I realize this will work with every file
> > > as long as I keep all my links on the 3rd layer...
> > > otherwise I would need more or less "..'s" :)
> > >
> > > Thanks in advance,
> > > Joel.
> >
> > if you use a for loop in bash:
> >
> > cd /big/sda/Sorted/Alphebetical/A
> > for movie in /big/sda/moviesa/*.avi; do
> > ln ../../..${movie##*/} ${movie##*/}
> > done
> >
> > then you should get the results you are looking for. 1200+
> > files may be too long for a bash for loop list, though. You
> > may need to combine this with xargs to prevent any problems.
> > --
> > Scott
>
> should have put a slash between the ..'s and the $movie
> variable. ln ../../../${movie##*/} ${movie##*/}
> --
> Scott
And -s in the ln command-line
ln -s ../../../${movie##*/} ${movie##*/}
--
Scott
More information about the kubuntu-users
mailing list