bash-logo
In this tutorial, we will use some commands that help us to find files in Linux.
These commands are:

  • echo
  • ls
  • find
  • whereis
  • locate

List files using echo command

Many people are not aware of echo command potential. This will come very handy when listing files in a given directory where ls, find and other commands are not available in rescue mode. This is because echo is a built-in command and available in any basic Linux machine.

The echo command uses Bash shell expansion to list files in a given directory.

To list files in a given directory use below command.

[10:23:38] [VPS1-centos7] root:/bin # echo *test
 gr2fonttest   grub2-fstest   mysqltest   sctp_test

View files using ls command

The simplest way is to use ls command if you are looking inside a directory of files

[10:23:38] [VPS1-centos7] root:/bin # ls *test*
 gr2fonttest   grub2-fstest   gtester   gtester-report   mysqltest   sctp_test   snmptest   test   testgdbm   testparm   varnishtest

You can use several options with ls. The most used options are :

  • -l : list
  • -a : all files even hidden ones
  • -h : human readble
  • -r : reverse order while sorting
  • -t : sorts output based on the date of modification of the file
[10:28:07] [VPS1-centos7] root:/bin # ls -ltr *test*
 -rwxr-xr-x. 1 root root 30488 Jun 9 2014 testgdbm
 -rwxr-xr-x. 1 root root 32520 Jun 10 2014 sctp_test
 -rwxr-xr-x. 1 root root 147576 Mar 16 2015 varnishtest
 -rwxr-xr-x. 1 root root 18665 Nov 20 2015 gtester-report
 -rwxr-xr-x. 1 root root 24200 Nov 20 2015 gtester
 -rwxr-xr-x. 1 root root 1062624 Jan 5 2016 grub2-fstest
 -rwxr-xr-x. 1 root root 37288 Feb 16 2016 test
 -rwxr-xr-x. 1 root root 24208 Apr 5 2016 gr2fonttest
 -rwxr-xr-x. 1 root root 15248 May 12 2016 snmptest
 -rwxr-xr-x 1 root root 27616 Jul 26 12:38 testparm
 -rwxr-xr-x 1 root root 3614048 Sep 29 20:04 mysqltest

Using find command

You can use find if you are not sure where the file is located

Syntax : find PATH ARGS

Examples:

[10:29:42] [VPS1-centos7] root:~ # find /var/ -name "test"
 /var/lib/mysql/test
 /var/lib/mysql /var/lib/mysql/test
 [10:30:06] [VPS1-centos7] root:~ # find /var/ -name "*test*"
 /var/lib/yum/yumdb/y/5853583d49795aa07058aa589ea4d70e7f0e9e21-yum-plugin-fastestmirror-1.1.31-34.el7-noarch
 /var/lib/mysql/test
 /var/lib/mysql/sbtest
 /var/lib/mysql/sbtest/sbtest1.frm
 /var/lib/mysql/phptest
 /var/lib/mysql /var/lib/mysql/test

The command find has many options that help to quickly find the wanted file. The most popular options are:

  • -type : the type of file (example: f for file, d for directory)
  • -name : the file name (we can use regexp as above)
  • -iname : ignoring case (example: ‘Test’ will match when using -iname “test”)
[10:37:38] [VPS1-centos7] root:~ # find /var/ -name "*test*" -type f
 /var/lib/mysql/sbtest/sbtest1.frm
[10:37:48] [VPS1-centos7] root:~ # find /var/ -name "*test*" -type d
 /var/lib/yum/yumdb/y/5853583d49795aa07058aa589ea4d70e7f0e9e21-yum-plugin-fastestmirror-1.1.31-34.el7-noarch
 /var/lib/mysql/test
 /var/lib/mysql/sbtest
 /var/lib/mysql/phptest
 /var/lib/mysql /var/lib/mysql/test
 [10:37:51] [VPS1-centos7] root:~ # find /var/ -iname "*tEsT*" -type d
 /var/lib/yum/yumdb/p/c4fddc2888b5046cde8b4049ccbaf0d25cbf4ff8-perl-Test-Harness-3.28-3.el7-noarch
 /var/lib/yum/yumdb/y/5853583d49795aa07058aa589ea4d70e7f0e9e21-yum-plugin-fastestmirror-1.1.31-34.el7-noarch
 /var/lib/mysql/test
 /var/lib/mysql/sbtest
 /var/lib/mysql/phptest
 /var/lib/mysql /var/lib/mysql/test

Using whereis command

whereis – locate the binary, source, and manual page files for a command

[10:40:13] [VPS1-centos7] root:~ # whereis test
 test: /usr/bin/test /usr/share/man/man1/test.1.gz

The most used options of whereis are :

  • -b : Search only for binaries.
  • -m : Search only for manuals.
  • -s : Search only for sources.
[10:40:16] [VPS1-centos7] root:~ # whereis -b test
 test: /usr/bin/test
[10:40:20] [VPS1-centos7] root:~ # whereis -s test
 test:
[10:40:24] [VPS1-centos7] root:~ # whereis -m test
 test: /usr/share/man/man1/test.1.gz

Using locate command

The locate command searches for the file pattern in the hole system. It uses an internal database to stock patterns.
To use locate install the package:

DEBIAN : # apt-get install locate
CENTOS : # yum install mlocate

Update the DB using :

# updatedb

Search the pattern:

[10:50:47] [VPS1-centos7] root:~ # locate kibana4
 /root/scripts/python/nagios/nagios_kibana4_status.py
[10:51:11] [VPS1-centos7] root:~ # locate sbtest
 /boot/grub2/i386-pc/usbtest.mod
 /usr/lib/grub/i386-pc/usbtest.mod
 /usr/lib/grub/i386-pc/usbtest.module
 /var/lib/mysql/sbtest
 /var/lib/mysql/sbtest/db.opt
 /var/lib/mysql/sbtest/sbtest1.frm

You can use -c option to count the number of patterns matching your file in your system
Example:

[10:51:16] [VPS1-centos7] root:~ # locate -c sbtest
 6

I hope that this blog helped you. Please visit our website for other interesting blogs and feel free to leave your feedbacks and thoughts. Till next time!

Related concept:   Does rm, cp, mv etc work alphabetically?