[ubuntu-uk] rsync chgrp problem - advice, please?
Matthew Macdonald-Wallace
matthew at truthisfreedom.org.uk
Thu Jun 7 08:28:09 BST 2007
On Thu, 07 Jun 2007 08:18:51 +0100, luxxius <luxxius at googlemail.com> wrote:
> Tony Arnold wrote:
> <snip>
>> for i in `find /home/diana/music -group diana` ; do chgrp root $i &&
>> chmod 644 $i; done
>> (should be all on one line, excuse the wrap)
>
>
> Tony / Matthew / Robert >>> Many thanks for your quick and very helpful
> replies.
>
> I've tried Tony's one-liner, which would work a treat with orthodox file
> names. Sadly, a lot of mine are from CD rips, and contain spaces. So
> the suggested script gags on the un-escaped spaces. Rats!
>
> Looks like I may have to do them by hand after all.
>
> Thanks ever so much for the ideas, though, as I now know about 300%
> about how to do this than I did a couple of hours ago. What a great list!
Not the one I originally used, but a good example all the same:
http://tlug.dnho.net/?q=node/198
gives:
#!/bin/sh
for i in ./* ; do
if [[ `echo "$i" | grep -r '_' | grep -v 'm3u'` ]]
then
# mv "$i" "`echo "$i" | sed 's/_/\ /g' | perl -p -e 's/(\\w+)/\\u\\L$1/g;' | sed 's/Mp3/mp3/g'`";
echo "`echo "$i" | sed 's/_/\ /g' | perl -p -e 's/(\\w+)/\\u\\L$1/g;' | sed 's/Mp3/mp3/g'`";
fi
done
The above script will give test output to ensure that this is what you want, to make the changes, do the following:
#!/bin/sh
for i in ./* ; do
if [[ `echo "$i" | grep -r '_' | grep -v 'm3u'` ]]
then
mv "$i" "`echo "$i" | sed 's/_/\ /g' | perl -p -e 's/(\\w+)/\\u\\L$1/g;' | sed 's/Mp3/mp3/g'`";
# echo "`echo "$i" | sed 's/_/\ /g' | perl -p -e 's/(\\w+)/\\u\\L$1/g;' | sed 's/Mp3/mp3/g'`";
fi
done
If you put this into a file called "rename.sh" and chmod +x rename.sh you can then run the script (./rename.sh)
Hope this helps,
Matt
--
Matthew Macdonald-Wallace
Lug-Master (http://www.thanet.lug.org.uk),
Dad (http://www.helpmeimadad.com/),
Ubuntu User( http://www.ubuntu.com/)
More information about the ubuntu-uk
mailing list