How to Find a file in FreeBSD

57,162

Solution 1

find / -name example.filename

Solution 2

locate filename

Much faster than find, if you're running the locate service, and it only finds files that existed at the time updatedb last ran (usualy the night befor under the control of a cron job).

You can run updatedb by hand, but that is even slower than the find cletus suggests, and requires root. I sometimes update the database by hand after installing a bunch of new stuff.

Solution 3

If you've got locate (aka slocate) installed, then

locate example.filename

locate runs a cron job every night that reindexes all the files on your machine. It's not always up to date for that reason.

Solution 4

Sometimes you want to find files at a specific directory level. In this case it can be convenient to use shell wildcards:

ls /data/*/example.filename

Obviously this only works if you have a rigid directory structure.

Solution 5

locate

As others mentioned, locate is the fast way to find a file. This command uses an pre-compiled index of the file and folder names. This database of names is searched, rather than crawling through your file system.

locate example.filename 

To be case-insensitive, add -i.

locate -i eXAmPle.FileName

Update locate database

The database used by locate must be up-to-date. After doing an install or download that may contain your desired file, you must update the locate database.

The locate database will eventually be updated automatically by your FreeBSD system. There is a weekly set of chores that includes this task. These chores are listed in the /etc/periodic/weekly/310.locate script.

The easiest safest way to force the early updating of the locate database is to force the weekly set of chores to be done now.

sudo periodic weekly

Or, you could even force all the regular chores to be done. You might want to do this immediately after setting up a new FreeBSD system.

sudo periodic daily weekly monthly

If using other avenues to update the locate database, you may get a message about being unsafe, revealing the names of all your system’s files to any user on the FreeBSD system. Using the periodic route avoids this problem.

Share:
57,162

Related videos on Youtube

Ian
Author by

Ian

Updated on September 17, 2022

Comments

  • Ian
    Ian almost 2 years

    I'm trying to locate all copies of example.filename on my FreeBSD server. What's the best / easiest / most efficient way to do this?

    • Greg Hewgill
      Greg Hewgill about 15 years
      While the answers will be similar, you might want to clarify whether you are using Linux, or FreeBSD. They aren't the same thing.
    • Ian
      Ian about 15 years
      edited title to make the OS more specific
    • mikl
      mikl about 15 years
      This should probably be tagged FreeBSD, but I lack the reputation to do so.
  • cletus
    cletus about 15 years
    Locate only works if you have the service running to build the locate db (forget what it's called). It can also suffer from time delay (in that the file you're looking for may have been added since the last build).
  • dmckee --- ex-moderator kitten
    dmckee --- ex-moderator kitten about 15 years
    Reliable, but slow. Sometimes very slow.
  • dmckee --- ex-moderator kitten
    dmckee --- ex-moderator kitten about 15 years
    Edits and comments crossed on the wire. Cool. You are, of course, right on both counts.
  • Drew Stephens
    Drew Stephens about 15 years
    If you find yourself doing find / or on any large tree more than once a week, then running the locate service is probably worthwhile, because locate(1) is so much faster.
  • Mihai Limbăşan
    Mihai Limbăşan about 15 years
    Yup, that matches everything then throws away everything except for that one name you were looking for. Instead you can simply do ' find -name "example.filename" ' which does exactly the same stuff without first printing everything and without running an extra grep process.
  • Zac Thompson
    Zac Thompson about 15 years
    other 'find' flags that may be appropriate, depending on the need: -type f (won't bother with directories or symlinks with the same name) -ls (to show details such as size of the file, e.g. if files have same name but different contents)
  • Basil Bourque
    Basil Bourque almost 5 years
    @cletus Running sudo periodic weekly updates the locate database. Run that after any install or download that may contain the files you desire.
  • XO01
    XO01 over 2 years
    I've been using this since 2003 lol. And the hell with what everyone else says - the machine is here to make my life easier (not other way around).