Padrões avançados de `grep` e `find`
Utilize expressões regulares complexas com `grep` e critérios avançados com `find` para realizar pesquisas precisas.
Padrões avançados de `grep` e `find` é uma aula grátis de Linux Command Line Mastery no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Linux Command Line Mastery, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Linux Command Line Mastery inclui 4 aulas no total.
Partes desta aula ainda não foram traduzidas e aparecem em inglês.
Beyond Basic Searches
Welcome back! In previous lessons, you've learned the basics of grep for filtering text and find for locating files.
Today, we'll dive into advanced patterns. This means using more powerful regular expressions with grep and sophisticated criteria with find to achieve highly precise searches.
Enhanced `grep` with ERE
The standard grep command uses Basic Regular Expressions (BRE). For more power, we often switch to Extended Regular Expressions (ERE).
- Use the
-Eoption (oregrep) to enable ERE. - ERE allows features like
+(one or more),?(zero or one),|(OR), and()for grouping without needing to escape them.
ERE Example: One or More (`+`)
The + metacharacter matches one or more occurrences of the preceding character or group. For example, colou+r would match "colour" and "colouur" but not "color".
Try running this example:
#!/bin/bash
# Create a test file
echo "color" > my_text.txt
echo "colour" >> my_text.txt
echo "colouur" >> my_text.txt
echo "Searching for 'colou+r':"
grep -E "colou+r" my_text.txt
# Clean up
rm my_text.txtERE Example: Zero or One (`?`)
The ? metacharacter matches zero or one occurrence of the preceding character or group. It's useful for optional characters.
For instance, colou?r would match "color" (zero 'u') and "colour" (one 'u').
Run this to see it in action:
#!/bin/bash
# Create a test file
echo "color" > my_text.txt
echo "colour" >> my_text.txt
echo "colouur" >> my_text.txt
echo "Searching for 'colou?r':"
grep -E "colou?r" my_text.txt
# Clean up
rm my_text.txtERE Example: OR Logic (`|`)
The | metacharacter acts as an OR operator, allowing you to match one pattern or another. Parentheses () are used for grouping patterns.
For example, (cat|dog)s matches "cats" or "dogs".
Here's a quick demo:
#!/bin/bash
# Create a test file
echo "apple" > fruits.txt
echo "banana" >> fruits.txt
echo "orange" >> fruits.txt
echo "grape" >> fruits.txt
echo "Searching for 'apple' OR 'orange':"
grep -E "apple|orange" fruits.txt
# Clean up
rm fruits.txtAdvanced `find`: Modification Time (`-mtime`)
Beyond just names, find can locate files based on when they were last modified. The -mtime option is key here.
-mtime N: Files modified exactly N*24 hours ago.-mtime +N: Files modified more than N*24 hours ago.-mtime -N: Files modified less than N*24 hours ago.
For example, find . -mtime -7 finds files modified in the last 7 days.
Advanced `find`: Access Time & Size
You can also search by access time (when a file was last read) and file size:
-atime N: Files last accessed N*24 hours ago.-size N[cwbkMG]: Files of a specific size.
Size units: c (bytes), w (two-byte words), b (512-byte blocks, default), k (KB), M (MB), G (GB).
Example: find . -size +1M finds files larger than 1MB.
#!/bin/bash
# Create a test file (1.5MB approx)
head -c 1500K /dev/urandom > large_file.bin
touch -a large_file.bin # Access now for -atime
echo "Finding files larger than 1MB:"
find . -size +1M -name "large_file.bin"
# Clean up
rm large_file.binCombining `find` Criteria
find commands are powerful because you can combine multiple criteria. By default, criteria are combined with an implicit AND.
You can also use:
-a: Explicit AND (often omitted).-o: OR operator.( ): Parentheses for grouping (must be escaped or quoted in shell).
Example: find . -type f -name "*.txt" -o -name "*.log" finds all .txt OR .log files.
#!/bin/bash
# Create test files
touch file1.txt
touch file2.log
touch file3.md
echo "Finding .txt OR .log files:"
find . \( -name "*.txt" -o -name "*.log" \)
# Clean up
rm file1.txt file2.log file3.md`find` and `-exec` for Actions
One of find's most powerful features is -exec, which allows you to run a command on each file or directory found.
-exec COMMAND {} \;: RunsCOMMANDfor each found item, replacing{}with the item's path. The\;marks the end of the command.-exec COMMAND {} +: RunsCOMMANDonce with all found items as arguments. More efficient for many files.
#!/bin/bash
# Create some empty files
touch old_report.txt
touch current_data.log
touch temp_notes.txt
echo "Listing all .txt files found:"
find . -name "*.txt" -exec ls -l {} \;
# Clean up
rm old_report.txt current_data.log temp_notes.txtAdvanced Search Challenge
You need to find all .log files that are larger than 100KB and were modified in the last 3 days, then print their names.
Which combination of find options would achieve this?
Recap: Precision Searches
Great job! You've leveled up your text and file searching skills.
- We explored Extended Regular Expressions (ERE) with
grep -E, using+,?, and|for more flexible pattern matching. - You learned to use advanced
findcriteria like-mtime,-atime, and-size. - We also covered combining these criteria with AND/OR logic and performing actions on found files using the powerful
-execoption.
These tools are essential for efficient system administration and scripting!
Aprenda Linux Command Line Mastery com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 12
- Aulas
- 48
Perguntas Frequentes
A aula “Padrões avançados de `grep` e `find`” é grátis?
Sim — o texto completo de “Padrões avançados de `grep` e `find`” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Linux Command Line Mastery, atualize para CoddyKit PRO. O curso de Linux Command Line Mastery inclui 4 aulas no total.
O que vou aprender em “Padrões avançados de `grep` e `find`”?
Utilize expressões regulares complexas com `grep` e critérios avançados com `find` para realizar pesquisas precisas. Você pratica Linux Command Line Mastery com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Linux Command Line Mastery?
Nenhuma experiência prévia é necessária. Linux Command Line Mastery no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Padrões avançados de `grep` e `find`”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Linux Command Line Mastery?
Sim. Cada aula de Linux Command Line Mastery inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Dominando expressões regulares (Regex)
- Padrões avançados de `grep` e `find`
- `xargs` para encadeamento de comandos
- Edição de Fluxos em Escala com sed e tr