You have two problems:
- Globbing interferes with your regexp
- Your regexp doesn't match what is should match
Uncovering the globbing mechanism
sudo find /dev | grep sd* doesn't work as before because you have a file or a folder in your current working directory which triggers the globbing from bash. Add a
echo in front of your command to see what globbing does to your command
echo grep sd*
By adding a random additional character globbing didn't match the file/folder anymore continued to work as expected.
How to prevent globbing
To prevent globbing from kicking in, you have to put
'...' around your term. This will make grep behave as before:
sudo find /dev | grep 'sd*'
How regexp work
Now that the regexp is working as expected let's look at what
* means. In short it means "This last character zero or n-times" and this is most probably not what you want. In your case a simple
sudo find /dev | grep sd
should be all you need to match.