[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: listing files with spaces, using wildcard



bruce wrote:
hey...

here's one i can't see..

goat a bunch of files in different dirs.. the files might have spaces

 1foo_ aa_bb_cc.dog
 2foo_aa_bbbb_cc.dog
 3foo_aa_bb _ccc.dog
 4foo_aa_bb_cc.dog
 5foo_aa_bb_cc.dog
 6foo_aa_bb_cc.dog

i'm trying to figure out how i can do a complete list of all files with
 *foo*dog

so i get the files with spaces and underlines...

i thought simply doing somehting like

 ls '*foo_*.dog' and surrounding the filename with single quotes would
work.. but it doesn't.

thoughts/pointers/etc...

thanks




This is fundamental:

the command: ls, does not take wildcards.
The shell expands wildcards and passes the results to ls.

By quoting the wildcards, you are passing them to ls to interpret, which it cannot.

The command, find: DOES accept wildcards for some arguments, like: -name. Thus, you want to pass wildcards to the find command by quoting or escaping them.

Also, the shell treats the double quote marks: " differently than the single quote marks: ' under certain circumstances.

The 'convention' for quoting is:

double quotes for passing wildcards

single quotes for strings that may contain other characters that the shell might interpret. But even then, it may depend on the command you are passing those arguments to.

For example, neither will allow you to pass a minus character, as the first character of a pattern match, to grep.

In your original work here, the first line you typed works:
ls *foo*dog
Even with spaces.

Your other attempts using quotes do not work because you are passing the wildcards to the ls command, which cannot use them.

Hope this helps!



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]