Finding files on a Linux system can be difficult if you don't know how. The best way to find files on Linux is to use a few terminal commands. Mastering some of these commands can give you complete control over files, and they are more useful than the simple search functions of other operating systems.
Step
Method 1 of 3: Using "find"
Step 1. Search for files by name
This type of search is the most basic, and you can do this with the find command. The command below will perform a search based on the words entered in the directory you are in as well as the subdirectories within it.
find -iname "filename"
If you use -iname instead of -name, the difference between upper and lower case keywords will have no effect. The -name command considers uppercase and lowercase letters to be different characters
Step 2. Set the search to start in the root directory
If you want to do a system-wide search, you can add the / modifier to the keyword. The modifier tells the find command to search thoroughly, starting from the root directory.
find / -iname "filename"
- You can start a search in a specific directory by replacing the / modifier with the directory path, for example /home/pat.
- You can use. other than / so that searches are only performed within the directory you are in and also the subdirectories within it.
Step 3. Use wildcard characters
* to search for anything that partially matches your keywords.
The wildcard * character can be used to find files whose full names you don't know, or if you want to find all files with a specific extension.
find /home/pat -iname "*.conf"
- The above command will return all the.conf files in the user directory named Pat (as well as the subdirectories therein).
- You can also use it to find anything whose name partially matches that keyword. For example, if you have a lot of documents related to wikiHow, you can find them by typing "*wiki*".
Step 4. Make search results easier to manage
If the search results are too many, it will be difficult for you to find the file you want. Use the character | and send the search results back to the "less" filter program. That way, you can scroll through and filter your search results more easily.
find /home/pat -iname "*.conf" | less
Step 5. Find search results with a specific type
You can use modifiers to return only certain types of results. You can search for regular files (f), directories (d), symbolic links (l), character devices (c), and block devices (b) using appropriate modifiers.
find / -type f -iname "filename"
Step 6. Filter the search results by size
If you have lots of files with similar names, but know the size of the file you want, you can filter the search by size.
find / -size +50M -iname "filename"
- The above command will return search results of 50 megabytes or more. You can use + or - to search for files with a larger or smaller size. Omitting the + or - sign makes the search return only results with the truly "correct" size.
- You can filter the search by bytes (c), kilobytes (k), megabytes (M), gigabytes (G), or 512 bytes (b) blocks. Be aware that the markings distinguish between uppercase and lowercase letters.
Step 7. Use boolean operators to combine search filters
You can use the -and, -or, and -not operators to combine different searches.
find /travelphotos -type f -size +200k -not -iname "*2015*"
The above command will look for files in the "travelphotos" directory that are over 200 kilobytes in size, but don't have the word "2015" in their name
Step 8. Perform a file search by owner name or permission
If you are trying to find a specific file that belongs to a specific user, or are looking for a file with certain permissions, you can narrow the search.
find / -user pat -iname "filename" find / -group users -iname "filename" find / -perm 777 -iname "filename"
The examples above will perform a search for a specific user, group, or permission within a keyword. You can also omit the filename to return all files that match that type. For example, find / -perm 777 will return all files with 777 permissions (no restrictions)
Step 9. Concatenate the commands to perform the action when the file has been found
You can combine the find command with other commands so that you can process files returned by keyword with that command. Separate the find command and the second command with the -exec flag, then end the line with {};
find. -type f -perm 777 -exec chmod 755 {};
The above command will search the directory you are in (and all subdirectories in it) for files with 777 permissions. Then, the chmod command will change the permissions to 755
Method 2 of 3: Using "locate"
Step 1. Install
locate functionality. The locate command is generally faster than the find command, due to the database utilization of your file system. Not all types of Linux are equipped with a locate function, so enter the following command to install it:
- Type sudo apt-get update, then press Enter.
- You can install it on Debian and ubuntu like this: Type sudo apt-get install mlocate, then press Enter. If the locate function was installed earlier, you will see the message mlocate is already the newest version.
- On Arch Linux, use pacman package manager: pacman -Syu mlocate
- For Gentoo, use emerge: emerge mlocate
Step 2. Update
locate database You. The locate command will not be able to find anything until it is created and updated. This process is usually done automatically every day, but you can also update it manually. You need to do this if you want to use the locate function as soon as possible.
Type in sudo updatedb, then press Enter
Step 3. Use the
locate to perform a simple search.
The locate function works quickly, but doesn't have as many options as the find command. You can perform basic file searches in a similar way to the find command.
locate -i "*.jpg"
- The above command will search the entire system for files with the-j.webp" />
- Like the find command, the -i modifier also makes uppercase and lowercase letters in keywords considered the same.
Step 4. Limit search results
If your search returns so many results that it is difficult for you to use them, you can reduce those results with the -n modifier, followed by the number of results you want to return.
locate -n 20 -i "*.jpg"
- Only 20 search results will be displayed.
- You can also use | to send search results to the less filter program for easier scrolling of results.
Method 3 of 3: Searching for Text in Files
Step 1. Use the command
grep to find the text string in the file.
If you're looking for a file that contains a specific phrase or character string, you can use the grep command. The basic grep command has the following format:
grep -r -i "search query" /path/to/directory/
- The -r modifier makes the search "recursive", so a search will be performed within the directory and all subdirectories within it to find files containing text with the search keyword.
- The -i modifier indicates that the search keyword does not differentiate between uppercase and lowercase letters. If you want to force the search to differentiate between uppercase and lowercase, ignore the -i modifier.
Step 2. Remove excess text
When doing a grep search as above, you'll see the filename with the matching letters highlighted. You can hide the matching text and show only the file directory name and path by adding:
grep -r -i "search keyword" /path/to/directory/ | cut -d: -f1
Step 3. Hide the error message
The grep command will return an error when attempting to access a directory without the appropriate permissions or when entering an empty directory. You can send error messages to /dev/null so they don't appear.
grep -r -i "search keyword" /path/to/directory/ 2>/dev/null