0Pricing
Linux Command Line Mastery · Pelajaran

Pola Lanjutan `grep` dan `find`

Gunakan regex kompleks dengan `grep` dan kriteria lanjutan dengan `find` untuk pencarian yang tepat.

Pola Lanjutan `grep` dan `find` adalah pelajaran Linux Command Line Mastery gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Linux Command Line Mastery, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Linux Command Line Mastery mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

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 -E option (or egrep) 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.txt

ERE 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.txt

ERE 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.txt

Advanced `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.bin

Combining `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 {} \;: Runs COMMAND for each found item, replacing {} with the item's path. The \; marks the end of the command.
  • -exec COMMAND {} +: Runs COMMAND once 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.txt

Advanced 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 find criteria like -mtime, -atime, and -size.
  • We also covered combining these criteria with AND/OR logic and performing actions on found files using the powerful -exec option.

These tools are essential for efficient system administration and scripting!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Pola Lanjutan `grep` dan `find`” gratis?

Ya — teks lengkap “Pola Lanjutan `grep` dan `find`” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Linux Command Line Mastery, upgrade ke CoddyKit PRO. Kursus Linux Command Line Mastery mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Pola Lanjutan `grep` dan `find`”?

Gunakan regex kompleks dengan `grep` dan kriteria lanjutan dengan `find` untuk pencarian yang tepat. Kamu berlatih Linux Command Line Mastery dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Linux Command Line Mastery?

Tidak diperlukan pengalaman sebelumnya. Linux Command Line Mastery di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Pola Lanjutan `grep` dan `find`” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Linux Command Line Mastery ini?

Ya. Setiap pelajaran Linux Command Line Mastery menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Menguasai Ekspresi Reguler (Regex)
  2. Pola Lanjutan `grep` dan `find`
  3. `xargs` untuk Penggabungan Perintah
  4. Mengedit Stream dalam Skala Besar dengan sed dan tr
← Kembali ke Linux Command Line Mastery