LINUX How to Search for Files and Folders via SSH
In some cases you would need to find the location of a given file or
to search for a certain text in all files under a directory. SSH
provides two different commands, which can be used to accomplish this.
In order to search for a file location you can use the find command.
Find is a very powerful tool and accepts various arguments allowing you
to specify the exact search term (i.e search by name, by type or even by
modified time).
For example, to search for a file called myFile.txt under the current folder (and all subfolders), you would need to use the following command:
An example of using grep to find a certain text can be found below:
To only list the file names containing the string you are searching but omit the line containing it, you can use the -l argument:
Grep can also be used to filter the results from other commands. For example, the line below will only output configuration.php result:
For example, to search for a file called myFile.txt under the current folder (and all subfolders), you would need to use the following command:
find . -name myFile.txt
If you are uncertain about the file name or would like to match a part of the name, you can use a wildcard pattern:find . -name “myFile*”
If you would like to list only directories and leave all files out of the result:find . -type d
Or if you want to filter only files modified for the last 2 days, you would need to use:find . -mtime -2
You
can also search for a given text in the files content as well. The
command you should be using in this case is ‘grep’ . Grep is a very
powerful tool and accepts various command line arguments. For a full
list it is recommended to check the manual pages by typing ‘man grep’.An example of using grep to find a certain text can be found below:
grep “database” configuration.php
The
above command instructs grep to look for the string “database” in
configuration.php file and display the containing line. If you don’t
know which file contains the text, you can use:grep -r -H “database” *
This
will make grep look recursively (-r option) and provide the result in
human readable format (-H option) for the string “database” in all (*)
files under the current working directory.To only list the file names containing the string you are searching but omit the line containing it, you can use the -l argument:
grep -l “database” *
This will display the filenames containing the word database, but will not actually list the line containing it.Grep can also be used to filter the results from other commands. For example, the line below will only output configuration.php result:
ls -la | grep configuration.php
In
some rare cases, you would not like to use find or grep. For example,
to find a certain file in the whole server, it would be best to use an
alternative command -- whereis or which:whereis perl
orwhich perl
The execution of the above commands will locate the perl binary and display the full path(s) to it.
Comments
Post a Comment