How to find all filenames with given extension
I need to find all .pem
files on my system. Would the following do this?
sudo find / -type f -name *.pem
If not, how would I write a find command to find every file of the sort?
Solution 1:
You're on the right track -- you just need to quote the pattern so that it gets interpreted by find
and not by your shell:
sudo find / -type f -name '*.pem'
Solution 2:
Using find /
will normally be very slow. Using locate
is much faster but somewhat imprecise because it doesn't support anything more complex than substring matching. A directory called .pembroke
will be found and returned by locate along with every file inside it.
A combination of locate
and grep
, however, has speed and precision. Conveniently, it also does not require sudo
.
locate .pem | grep "\.pem$"
The downside? The database locate
uses is normally only updated once per day so any recent changes (additions, deletions, name changes, etc.) will not be found.
Solution 3:
Almost!
sudo find / -type f -name \*.pem
or
sudo find / -type f -name "*.pem"
otherwise the shell will interpret the * instead of find.