jam <[email protected]> writes:
> On Saturday 11 April 2009 10:00:04 [email protected] wrote:
>> > On Saturday 11 April 2009 00:06:56 [email protected] wrote:
>> > [snip]
>> >
>> > > > What am I missing?
>> > >
>> > > find(1), which is used to locate a list of files matching a given set
>> > > of criteria, allowing you to do something like this:
>> > >
>> > > chmod -R 644 `find -name '*.jpg'`
>> > >
>> > > (Note the single-quotes around the glob pattern? Without that the
>> > > shell would expand the pattern, which would cause a syntax error for
>> > > the find command, and not do what you want.)
>> > >
>> > > There is a limit to the number of arguments you can pass to chmod,
>> > > though, so it is generally speaking better to structure that like this:
>> > >
>> > > find -name '*.jpg' | xargs chmod -R 644
>> > >
>> > > That falls apart if any of your filenames have spaces in them, though,
>> > > since xargs splits on *any* whitespace; to work around that use:
>> > >
>> > > find -name '*.jpg' -print0 | xargs -0 chmod -R 644
>> > >
>> > > See the manual pages for the fine detail, obviously.
>> >
>> > Um sure, but in this context too complicated IMHO
>> > find . -type d -exec chmod 775 {} \;
>> > find . -type f -exec chmod 664 {} \;
As has already been pointed out, that is significantly less efficient
than the xargs use — or the other options like 'while read' that I also
omitted from my suggestion.
Also, now the OP knows about find(1), so that when they /do/ want to do
something more complicated they can. :)
>> need "" around the {} for filenames with spaces
>
> Is that a thought experiment ? ... cause I tried it ! exactly as
> posted
Heh. You want to know what is special? The behaviour of that call
without quoting is going to vary between shells, because {} expansion
isn't actually as standard as it sounds.
So, in some cases it will work, and in some the braces will just vanish
away, like the snark, and things will not work as expected...
Regards,
Daniel
--
SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/
Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html