- How To Grep Words From a File in Unix / Linux
- Use grep to find words from a file
- Grep Words Form the File in Unix
- Ignore case distinctions with grep
- Grep multiple files
- Grep Compressed files with zgrep
- How to filter commands with grep
- Conclusion
- How to Find a Specific String or Word in Files and Directories
- If You Appreciate What We Do Here On TecMint, You Should Consider:
- Linux find text in files
- Find text in files into a directory
- 1. Find text in files recursive
- 2. Find text in files case insensitive and recursive
- 3. Find multiple words in files
- Linux / UNIX Recursively Search All Files For A String
- How to use grep command to recursively search All files for a String
- Following symtlinks
- Case sensitive recursive search
- Displaying files name when searching for a string/word
- Using find command to search recursively
- Finding all files containing specific text on Linux
- How to search only files that have specific extensions
- Understanding grep command options that used for searching text files
- Summing up
- Команда find в Linux
- Основная информация о Find
- Основные параметры команды find
- Критерии
- Примеры использования
- 1. Поиск всех файлов
- 2. Поиск файлов в определенной папке
- 3. Ограничение глубины поиска
- 4. Инвертирование шаблона
- 5. Несколько критериев
- 6. Несколько каталогов
- 7. Поиск скрытых файлов
- 8. Поиск по разрешениям
- 9. Поиск файлов в группах и пользователях
- 10. Поиск по дате модификации
- 11. Поиск файлов по размеру
- 12. Поиск пустых файлов и папок
- 13. Действия с найденными файлами
- Выводы
How To Grep Words From a File in Unix / Linux
Use grep to find words from a file
To find word from a file use following syntax:
grep » word » < filename >
Say, you wan to find a word named “Orange” in the file called data.txt, run:
$ grep «orange» data.txt
Grep prints all lines containing ‘orange’ from the file data.txt, regardless of word boundaries; therefore lines containing ‘orangeade’ or ‘oranges’ are also printed.
Grep Words Form the File in Unix
To print all lines containing ‘orange ‘ as a word (‘orangeade’ and ‘oranges’ will not match), run:
$ grep -w orange data.txt
Ignore case distinctions with grep
The grep command is case sensitive by default, so this example’s output does not include lines containing ‘Orange’ (with a capital O) unless they also contain ‘orange’. To perform ignore case distinctions use the -i option:
$ grep -i orange data.txt
You can combine all options together to find only ‘orange’ as a word with no case distinctions using the grep command $ grep -wi orange data.txt
Grep multiple files
Pass the -r option to enable recursive search through a directory tree:
grep -r «main()» /home/vivek/projects/
Grep Compressed files with zgrep
One can search compressed file using the zgrep command. It invokes grep on compressed or gzipped file. The syntax is same as grep:
grep [option] «word-to-search» file.gz
grep «192.168.2.5» /var/log/httpd/access.log.gz
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
How to filter commands with grep
Conclusion
This page explained the grep command that is used to search text, strings or words for given text file. See our grep command help page for further details.
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
How to Find a Specific String or Word in Files and Directories
Do you want to find all files that contain a particular word or string of text on your entire Linux system or a given directory. This article will guide you on how to do that, you will learn how to recursively dig through directories to find and list all files that contain a given string of text.
A simple way to work this out is by using grep pattern searching tool, is a powerful, efficient, reliable and most popular command-line utility for finding patterns and words from files or directories on Unix-like systems.
The command below will list all files containing a line with the text “check_root”, by recursively and aggressively searching the
Find a Word in Directory
Where the -R option tells grep to read all files under each directory, recursively, following symbolic links only if they are on the command line and option -w instructs it to select only those lines containing matches that form whole words, and -e is used to specify the string (pattern) to be searched.
You should use the sudo command when searching certain directories or files that require root permissions (unless you are managing your system with the root account).
To ignore case distinctions employ the -i option as shown:
If you want to know the exact line where the string of text exist, include the -n option.
Find String with Line Number
Assuming there are several types of files in a directory you wish to search in, you can also specify the type of files to be searched for instance, by their extension using the —include option.
This example instructs grep to only look through all .sh files.
In addition, it is possible to search for more than one pattern, using the following command.
Find Multiple Words in Files
That’s It! If you know any other command-line trick to find string or word in files, do share with us or ask any questions regarding this topic, use the comment form below.
If You Appreciate What We Do Here On TecMint, You Should Consider:
TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.
If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.
We are thankful for your never ending support.
Источник
Linux find text in files
Posted on February 12, 2016 By Nikola Stojanoski
If you need to find text in file or multiple files on a Linux system you can use grep (global regular expression print) in a very efficient way to do so. Here are few examples that I commonly use.
Find text in files into a directory
Use this command to find the text you are looking for within the directory
If you want to select only those lines containing matches that form whole words use the -w switch (–word-regexp). If you search for “word” this will NOT display words like someword, word123, etc.
If you don’t know the capitalization of words and want to ignore case distinctions use the -i switch (–ignore-case). If you search for “word” it will display Word, WORD, word, wORD, etc.
And the most often used command for me is recursive search -r switch (–recursive)
And finally few examples that i use the most
1. Find text in files recursive
Invoke -w (–word-regexp) and -r (–recursive) switch:
2. Find text in files case insensitive and recursive
Invoke -i (–ignore-case) and -r (–recursive) switch
3. Find multiple words in files
To find two different words you must use egrep
This days i use this to search trough logs, mostly apache, nginx and mail logs.
Also don’t forget to use zgrep. Zgrep invokes grep on compressed or gzipped files. All options specified are passed directly to grep.
For this we will use grep case insensitive because sometimes mail addresses can have Capital letters in the user First and Last Names.
This will output file and date when the mail was sent to the user, and than you can grep the time to get all the logs for that time:
You can now easy look at the log:
This ware just few command i usually use, look at the man page for more options.
Источник
Linux / UNIX Recursively Search All Files For A String
H ow do I recursively search all text files for a string such as foo under UNIX / Linux / *BSD / Mac OS X shell prompt?
You can use grep command or find command as follows to search all files for a string or words recursively.
Tutorial details | |
---|---|
Difficulty level | Easy |
Root privileges | No |
Requirements | Linux or Unix with grep and find utilities |
Est. reading time | 2 minutes |
How to use grep command to recursively search All files for a String
The syntax is as follows for the grep command to find all files under Linux or Unix in the current directory:
cd /path/to/dir
grep -r «word» .
grep -r «string» .
The -r option read/sarch all files under each directory, recursively, following symbolic links only if they are on the command line. In other words, it will look into sub-directories too. We can also state path as follows:
grep -r ‘something’ /path/to/dir
Following symtlinks
The following syntax will read and search all files under each directory, recursively. Follow all symbolic links too by passing the -R (capital R ):
grep -R ‘word’ .
grep -R ‘string-to-search’ /path/to/dir/
Case sensitive recursive search
To ignore case distinctions, try:
grep -ri «word» .
Displaying files name when searching for a string/word
To display print only the filenames with GNU grep, enter:
grep -r -l «foo» .
You can also specify directory name:
grep -r -l «foo» /path/to/dir/*.c
Using find command to search recursively
find command is recommend because of speed and ability to deal with filenames that contain spaces.
- No ads and tracking
- In-depth guides for developers and sysadmins at Opensourceflare✨
- Join my Patreon to support independent content creators and start reading latest guides:
- How to set up Redis sentinel cluster on Ubuntu or Debian Linux
- How To Set Up SSH Keys With YubiKey as two-factor authentication (U2F/FIDO2)
- How to set up Mariadb Galera cluster on Ubuntu or Debian Linux
- A podman tutorial for beginners – part I (run Linux containers without Docker and in daemonless mode)
- How to protect Linux against rogue USB devices using USBGuard
Join Patreon ➔
Older UNIX version should use xargs to speed up things:
find /path/to/dir -type f | xargs grep -l «foo»
It is good idea to pass -print0 option to find command that it can deal with filenames that contain spaces or other metacharacters:
find /path/to/dir -type f -print0 | xargs -0 grep -l «foo»
OR use the following OSX/BSD/find or GNU/find example:
Sample outputs from the last command:
Fig.01: Unix and Linux: How to Grep Recursively?
Finding all files containing specific text on Linux
Say you want to find orange and mango words, then try:
grep -r -E ‘orange|mango’ .
grep -r -E ‘orange|mango’ /dir/to/search/
This is how you set up pattern
grep -r -e ‘pattern’ /dir/to/search
For extended grep (see egrep command for regular expressions):
egrep -r ‘word’ /dir/to/search/
egrep -r ‘regex’ /dir/to/search/
We can combine all options too:
grep -rnw -e ‘pattern’ /dir/to/search/
egrep -rnw ‘regex’ /path/to/search/
How to search only files that have specific extensions
Want to search files having either ‘.pl’ or ‘.php’ extensions for foo() ? Try:
grep —include=\*.
egrep —include=\*.
We can skip any command-line file with a name suffix that matches the pattern GLOB, using wildcard matching. For instance, exclude all .bin files:
grep —exclude=\*.bin -r -n -0 ‘string_to_search’ /path/
egrep —exclude=\*.bin -r -n -0 ‘regex’ /path/to/search/
When searching recursively, we can skip any subdirectory whose base name matches wildcard. For instance, skip includes and docs directory:
Understanding grep command options that used for searching text files
- -r : Rrecursive search
- -i : Ignore case distinctions in patterns and data
- -w : Match only whole words
- -n : Show line number with output lines
- -e ‘pattern’ : Use PATTERNS for matching
- -E : All search PATTERNS are extended regular expressions
- —include=GLOB : Search only files that match GLOB (a file pattern)
- —exclude=GLOB : Skip files that match GLOB
- —exclude-dir=GLOB : Skip directories that match GLOB
GLOB means to expand to wildcard patterns. For example, GLOB, *.txt means all files ending with .txt extension. A string is a wildcard pattern if it contains one of the following characters:
- ? – Matches any single character.
- * – Matches any string, including the empty string.
- [
Globbing is the operation that expands a wildcard pattern into the list of path-names matching the pattern.
Summing up
You learned how to search for text, string, or words recursively on Linux, macOS, *BSD, and Unix-like systems. See the following man pages:
man grep
man find
man 3 glob
man 7 glob
🐧 Get the latest tutorials on Linux, Open Source & DevOps via
Источник
Команда find в Linux
Очень важно уметь вовремя и очень быстро найти нужную информацию в системе. Конечно, все современные файловые менеджеры предлагают отличные функции поиска, но им не сравнится с поиском в терминале Linux. Он намного эффективнее и гибче обычного поиска, вы можете искать файлы не только по имени, но и по дате добавления, содержимому, а также использовать для поиска регулярные выражения. Кроме того, с найденными файлами можно сразу же выполнять необходимые действия.
В этой статье мы поговорим о поиске с помощью очень мощной команды find Linux, подробно разберем ее синтаксис, опции и рассмотрим несколько примеров.
Основная информация о Find
Find — это одна из наиболее важных и часто используемых утилит системы Linux. Это команда для поиска файлов и каталогов на основе специальных условий. Ее можно использовать в различных обстоятельствах, например, для поиска файлов по разрешениям, владельцам, группам, типу, размеру и другим подобным критериям.
Утилита find предустановлена по умолчанию во всех Linux дистрибутивах, поэтому вам не нужно будет устанавливать никаких дополнительных пакетов. Это очень важная находка для тех, кто хочет использовать командную строку наиболее эффективно.
Команда find имеет такой синтаксис:
find [ папка] [ параметры] критерий шаблон [действие]
Папка — каталог в котором будем искать
Параметры — дополнительные параметры, например, глубина поиска, и т д
Критерий — по какому критерию будем искать: имя, дата создания, права, владелец и т д.
Шаблон — непосредственно значение по которому будем отбирать файлы.
Основные параметры команды find
Я не буду перечислять здесь все параметры, рассмотрим только самые полезные.
- -P никогда не открывать символические ссылки
- -L — получает информацию о файлах по символическим ссылкам. Важно для дальнейшей обработки, чтобы обрабатывалась не ссылка, а сам файл.
- -maxdepth — максимальная глубина поиска по подкаталогам, для поиска только в текущем каталоге установите 1.
- -depth — искать сначала в текущем каталоге, а потом в подкаталогах
- -mount искать файлы только в этой файловой системе.
- -version — показать версию утилиты find
- -print — выводить полные имена файлов
- -type f — искать только файлы
- -type d — поиск папки в Linux
Критерии
Критериев у команды find в Linux очень много, и мы опять же рассмотрим только основные.
- -name — поиск файлов по имени
- -perm — поиск файлов в Linux по режиму доступа
- -user — поиск файлов по владельцу
- -group — поиск по группе
- -mtime — поиск по времени модификации файла
- -atime — поиск файлов по дате последнего чтения
- -nogroup — поиск файлов, не принадлежащих ни одной группе
- -nouser — поиск файлов без владельцев
- -newer — найти файлы новее чем указанный
- -size — поиск файлов в Linux по их размеру
Примеры использования
А теперь давайте рассмотрим примеры find, чтобы вы лучше поняли, как использовать эту утилиту.
1. Поиск всех файлов
Показать все файлы в текущей директории:
2. Поиск файлов в определенной папке
Показать все файлы в указанной директории:
Искать файлы по имени в текущей папке:
Не учитывать регистр при поиске по имени:
find . -iname «test*»
3. Ограничение глубины поиска
Поиска файлов по имени в Linux только в этой папке:
find . -maxdepth 1 -name «*.php»
4. Инвертирование шаблона
Найти файлы, которые не соответствуют шаблону:
find . -not -name «test*»
5. Несколько критериев
Поиск командой find в Linux по нескольким критериям, с оператором исключения:
find . -name «test» -not -name «*.php»
Найдет все файлы, начинающиеся на test, но без расширения php. А теперь рассмотрим оператор ИЛИ:
find -name «*.html» -o -name «*.php»
6. Несколько каталогов
Искать в двух каталогах одновременно:
find ./test ./test2 -type f -name «*.c»
7. Поиск скрытых файлов
Найти скрытые файлы:
8. Поиск по разрешениям
Найти файлы с определенной маской прав, например, 0664:
find . type f -perm 0664
Найти файлы с установленным флагом suid/guid:
find / -perm 2644
find / -maxdepth 2 -perm /u=s
Поиск файлов только для чтения:
find /etc -maxdepth 1 -perm /u=r
Найти только исполняемые файлы:
find /bin -maxdepth 2 -perm /a=x
9. Поиск файлов в группах и пользователях
Найти все файлы, принадлежащие пользователю:
find . -user sergiy
Поиск файлов в Linux принадлежащих группе:
find /var/www -group developer
10. Поиск по дате модификации
Поиск файлов по дате в Linux осуществляется с помощью параметра mtime. Найти все файлы модифицированные 50 дней назад:
Поиск файлов в Linux открытых N дней назад:
Найти все файлы, модифицированные между 50 и 100 дней назад:
find / -mtime +50 –mtime -100
Найти файлы измененные в течении часа:
11. Поиск файлов по размеру
Найти все файлы размером 50 мегабайт:
От пятидесяти до ста мегабайт:
find / -size +50M -size -100M
Найти самые маленькие файлы:
find . -type f -exec ls -s <> \; | sort -n -r | head -5
find . -type f -exec ls -s <> \; | sort -n | head -5
12. Поиск пустых файлов и папок
find /tmp -type f -empty
13. Действия с найденными файлами
Для выполнения произвольных команд для найденных файлов используется опция -exec. Например, выполнить ls для получения подробной информации о каждом файле:
find . -exec ls -ld <> \;
Удалить все текстовые файлы в tmp
find /tmp -type f -name «*.txt» -exec rm -f <> \;
Удалить все файлы больше 100 мегабайт:
find /home/bob/dir -type f -name *.log -size +100M -exec rm -f <> \;
Выводы
Вот и подошла к концу эта небольшая статья, в которой была рассмотрена команда find. Как видите, это одна из наиболее важных команд терминала Linux, позволяющая очень легко получить список нужных файлов. Ее желательно знать всем системным администраторам. Если вам нужно искать именно по содержимому файлов, то лучше использовать команду grep.
Источник