find returns unusable result

Bill Campbell freebsd at
Fri Mar 2 17:57:10 UTC 2007

On Wed, Feb 28, 2007, Vince wrote:
>Josh Tolbert wrote:
>> On Wed, Feb 28, 2007 at 05:12:58PM -0600, Paul Schmehl wrote:
>>> I'd like to cron a process that looks at a certain folder every day and 
>>> changes the perms on a directory if they aren't what I want. 
>>> Unfortunately, the people creating the folders are Windows folks using 
>>> WinSCP, and so they create folders with spaces in them.  (E.g. Day 1, Day 
>>> 2, etc.)
>>> I thought I could just do this:
>>> chmod 755 `find /path/to/dirs -type d`
>>> but find returns a directory name of Day, Day, Day, which (obviously) 
>>> doesn't work.
>>> >From the cli, find returns the actual directory name.
>>> How can I get find to return the dirs correctly in a script?  Or is there 
>>> some other way to do this that would work?
>>> Paul Schmehl (pauls at
>> find /path/to/dirs -type d -print0 | xargs -0 chmod 755
>or just
>find /path/to/dirs -type d -exec chmod 755 {} \;
>should do it.

While that works, the -print0 | xargs -0 is far more efficient as it isn't
exec'ing a process for every match.  This may not be important for a few
files or directories, but can make a significant difference when processing
thousands of entries.

INTERNET:   bill at Celestial.COM  Bill Campbell; Celestial Software LLC
URL:  PO Box 820; 6641 E. Mercer Way
FAX:            (206) 232-9186  Mercer Island, WA 98040-0820; (206) 236-1676

When I hear a man applauded by the mob I always feel a pang of pity
for him.  All he has to do to be hissed is to live long enough.
		-- H.L. Mencken, ``Minority Report''

More information about the freebsd-questions mailing list