In your second command, you grep P*. This will prompt the shell to do filename globbing on P*, i.e. it will expand P* to all files starting with the letter P.
Use set -x in your shell to see what gets executed (turn tracing off with set +x). I actually have tracing turned on by default in my own interactive shell sessions just to see what I'm doing.
Just double-quoting P* won't solve this as the regular expression P* also matches filenames such as APPLE and file.PP, and actually hello_world.c and all other filenames as well as P* also matches filenames with no Ps in them.
Generally, you shouldn't parse the output of ls though, so the following would be a better way of getting a list of files (not directories) starting with the letter P:
$ find . -type f -maxdepth 1 -name "P*"
This will find all regular files (-type f) in the current directory (.) with names starting with P (-name "P*"). The -maxdepth 1 option restricts find to only this directory. It would otherwise recurse down into subdirectories as well.
To do with find what you're doing with grep -v /, i.e. removing the directories from the list rather than selecting the regular files:
$ find . ! -type d -maxdepth 1 -name "P*"
This will also find non-regular files, such as sockets etc. In some shells it's necessary to escape or quote the !, i.e. saying
$ find . "!" -type d -maxdepth 1 -name "P*"
or
$ find . \! -type d -maxdepth 1 -name "P*"
Note that the quoting of P* is important so that your shell doesn't expand it.
Process...? – JigglyNaga Jul 31 '16 at 10:42ls -p | grep -v / | grep P*– asaf92 Jul 31 '16 at 10:44ls -p. Congratulations, there must be a prize waiting for you somewhere. :) – Satō Katsura Jul 31 '16 at 11:04ls -pfor the purpose of filtering (in or out) directories is not uncommon (even though it's flawed in that it doesn't handle filenames with newline characters). – Stéphane Chazelas Jul 31 '16 at 11:14ls -pfrom the link above, but i'll still have my prize please. – asaf92 Jul 31 '16 at 11:22Process1,Process2,Process3, etc., as example *file names. This is almost as confusing as usingDirectory1,Directory2, andDirectory3as example file names andFile1,File2, andFile3as example directory names. More to the point, don’t say thatlslists processes; that’s wrong. (2) Please don’t edit your question to say “I made a mistake.” Edit it to fix the mistake.* Add a comment if people have clearly been investing a lot of effort into the wrong version of the question, but don’t clutter up the question itself with change markings. – Scott - Слава Україні Jul 31 '16 at 16:23ls /etc | grep d*is yielding no results butls /etc | grep p*lists entire directory. – Scott - Слава Україні Jul 31 '16 at 16:39