I want to search for all .conf
files in /etc/
.
I tried grep -r *.conf /etc
, but the result isn't right.
What am I doing wrong?
Ask Ubuntu is a question and answer site for Ubuntu users and developers. It only takes a minute to sign up.
Sign up to join this communityJust press Ctrl+Alt+T on your keyboard to open Terminal. When it opens, run the command below:
find . -type f -name "*.txt"
This will list all files with the extension .txt
.
The .
at the start denotes the current directory. find
searches recursively in all the directories below the given path. If you want the search to start somewhere other than the current working directory, specify the path, for example:
find /etc -type f -name "*.conf"
This searches the /etc
directory and all its subdirectories for regular files with the .conf
extension.
find
is so widely used, so well documented, and has so many StackOverflow/Exchange posts about it that it'd be harder to find something easier to work with. Just about anything you'd want to do has been written up online somewhere.
May 9, 2018 at 14:59
find
with the -type
the possible file types are: b block special | c character special | d directory | f regular file | l symbolic link | p FIFO | s socket
grep
searches the contents of files, not the file names.
To find all .conf
files in /etc/
you'll want find:
find /etc -name "*.conf"
I'd personally use find
, but you can glob for these things too:
shopt -s globstar
ls /etc/{,**/}*.conf
And you can use locate and it's fast but not reliable.
locate '/etc/**.conf'
locate
relies on the mlocate database to have been updated recently to be accurate. By default that is only scheduled to update once a day (though you can force it manually with updatedb
).
The find command is slow, use this command will give you result immediately:
locate "/etc/*.conf"
More info about locate
command (in mlocate
package) can be found here: https://medium.com/@thucnc/the-fastest-way-to-find-files-by-filename-mlocate-locate-commands-55bf40b297ab
locate "/etc/**.conf"
) if you want to search recursively like the question mentions?
The following command will return all files and folders ending in .conf
:
ls -lR /etc | grep ".conf$"
To find only files, run:
find /etc -type f -name '*.conf'