229

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?

6 Answers 6

349

Just 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.

7
  • 1
    It works. Are there any alternatives for this command? Aug 17, 2013 at 10:56
  • 1
    You can take a look at Locate.
    – Mitch
    Aug 17, 2013 at 11:07
  • 2
    @AdrianGeorge 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
  • 1
    @Turtle10000 -type f Search for files.
    – Mitch
    Dec 8, 2020 at 17:56
  • 1
    @Turtle10000 looking into the man page of 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
    – Honey
    Dec 18, 2020 at 14:50
11

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"
10

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'
3
  • 1
    Why isn't locate reliable?
    – Giraldi
    Sep 6, 2017 at 2:30
  • 2
    @Giraldi 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).
    – Oli
    Sep 6, 2017 at 8:42
  • @Oli not true on macs though, right? think mac os keeps mlocate updated
    – d8aninja
    Feb 21, 2019 at 20:34
1

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

2
  • 3
    locate was mentioned two years ago: askubuntu.com/a/333728/158442
    – muru
    May 18, 2016 at 4:05
  • Shouldn't it have two asterisks (locate "/etc/**.conf") if you want to search recursively like the question mentions?
    – Leponzo
    Mar 10, 2021 at 19:49
1

How about using a simple ls command:

ls /etc/*.conf
0

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'

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .