On Sat, 2006-05-20 at 18:42 +1000, Alexander Samad wrote: true genius at work here!
that worked, thank you. > On Sat, May 20, 2006 at 05:34:52PM +1000, david wrote: > > On Sat, 2006-05-20 at 15:25 +1000, david wrote: > > > > My latest attempt below... and it works all the way down to the mv line, > > but then fails because of the spaces. I get this diagnostic: > > > > mv: when moving multiple files, last argument must be a directory > > > > > > #!/bin/bash > > # takes the first 3 chars of each directory name and > > # prepends it to the file names within that directory. > > > > ls | while read x > > do > > y=$(echo "$x" | cut -c -3) > > ls "$x" | while read z > > do > > mv "$x"/"$z" "$x"/$y"$z" > > try mv "$x/$z" "$x/$y$z" > > > done > > done > > > > > > > > > > > On Sat, 2006-05-20 at 15:12 +1000, Howard Lowndes wrote: > > > > > > > I've changed the scrip thus: > > > > > > #!/bin/bash > > > cd /home/david/test > > > for x in $(ls) > > > do > > > y=$(echo "$x" | cut -c -3) > > > for z in $(ls "$x") > > > do > > > mv "$x"/"$z" "$x"/$y"$z" > > > done > > > done > > > > > > but this is what i get: > > > > > > [EMAIL PROTECTED]:~ $ ls -l test > > > total 12 > > > drwxr-xr-x 2 david david 4096 2006-05-20 15:16 1test > > > drwxr-xr-x 2 david david 4096 2006-05-20 15:16 2test > > > drwxr-xr-x 2 david david 4096 2006-05-20 15:14 3 test > > > [EMAIL PROTECTED]:~ $ ls test/3\ test/ > > > 3 test > > > [EMAIL PROTECTED]:~ $ ./shelltest > > > ls: 3: No such file or directory > > > ls: test: No such file or directory > > > [EMAIL PROTECTED]:~ $ > > > > > > > > > > > > > david wrote: > > > > > The scrip works as long as there are no blanks.... unfortunately there > > > > > are lots of blanks in both directories and filenames. Can anyone tell > > > > > me > > > > > what i should be doing? > > > > > > > > > > #!/bin/bash > > > > > # takes the first 3 chars of each directory and > > > > > # prepends it to the file names in that directory. > > > > > > > > > > #cd /home/david/Desktop/musicbyalbum > > > > > cd /home/david/test > > > > > for x in $(ls) > > > > > do > > > > > > > > I think this might work for you > > > > > > > > y=$(echo "$x" | cut -c -3) > > > > for z in $(ls "$x") > > > > do > > > > mv "$x"/"$z" "$x"/"$y""$z" > > > > > > > > > > > > > done > > > > > done > > > > > > > > > > > > > > > > > > -- > > > > Howard. > > > > LANNet Computing Associates - Your Linux people <http://lannetlinux.com> > > > > When you want a computer system that works, just choose Linux; > > > > When you want a computer system that works, just, choose Microsoft. > > > > > > > -- > > SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ > > Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html > > > -- > SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ > Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html
