On May 11, 2005, at 8:08 PM, Jerry Krinock wrote: > In the arguments of various commands, for example "find" and "rm", > I would > often like to match any path containing a given word with a wildcard > expression like: > > *Fruit* > > And I expect this to match _any_ pathname containing "Fruit", > including: > > ~/Fruit/Apple/Seeds > /Applications/Fruit/Lemon.app > /Volumes/MyHD/Fruit > > but it never works. The problem seems to be that the path separator > character "/" is beyond the scope of the wildcard "*". I can get the > desired result if I search a set of wildcard expressions, such as: > > /*/Fruit/* > /*/*Fruit/* > /Fruit/*/*/*/ > etc. > etc. > etc. find [pathname ...] -name '*Fruit*' or find [pathname ...] -name '*Fruit*' -exec rm {} \; The single quotes around the search term prevent the asterisk meta characters from being expanded by the shell before the command is executed. Other options (-xdev, -type) can be used to limit the search to local drives and the type of files that will match the pattern. "{}" is the current matching pathname which gets passed to the command to be run by exec. "\;" the backslash keeps the semicolon from being interpreted by the shell. The semicolon closes -exec and its arguments. The internet is littered with 'find' tutorials. Phil