Mencari File & Teks — Terminal

Mencari File find — Cari File berdasarkan Kriteria # Cari file berdasarkan nama find . -name "*.js" # Cari semua file .js dari direktori saat ini ke bawah # Cas

Mencari File

find — Cari File berdasarkan Kriteria

# Cari file berdasarkan nama
find . -name "*.js"
# Cari semua file .js dari direktori saat ini ke bawah

# Case-insensitive
find . -iname "readme*"

# Cari hanya file (bukan folder)
find . -type f -name "*.css"

# Cari hanya folder
find . -type d -name "components"

# Cari berdasarkan ukuran
find . -size +1M        # lebih dari 1MB
find . -size -100k      # kurang dari 100KB

# Cari berdasarkan waktu modifikasi
find . -mtime -7        # dimodifikasi dalam 7 hari terakhir
find . -mtime +30       # dimodifikasi lebih dari 30 hari lalu

# Exclude direktori tertentu
find . -name "*.js" -not -path "*/node_modules/*"

find dengan Action

# Hapus semua file .tmp
find . -name "*.tmp" -delete

# Jalankan perintah untuk setiap file yang ditemukan
find . -name "*.log" -exec wc -l {} \;

# Tampilkan dengan detail
find . -name "*.js" -exec ls -la {} \;

which & where — Cari Lokasi Program

# Di mana program ini berada?
which node
# /usr/local/bin/node

which python3
# /usr/bin/python3

Mencari Teks di dalam File

grep — Global Regular Expression Print

grep adalah salah satu perintah paling penting untuk developer. Digunakan untuk mencari teks di dalam file.

# Cari teks dalam satu file
grep "function" app.js
# Menampilkan semua baris yang mengandung "function"

# Case-insensitive
grep -i "error" server.log

# Cari di semua file dalam folder (recursive)
grep -r "TODO" src/

# Tampilkan nomor baris
grep -n "import" app.js
# 1:import React from "react";
# 3:import "./App.css";

# Tampilkan jumlah kecocokan
grep -c "console.log" src/*.js

# Cari yang TIDAK mengandung pattern
grep -v "node_modules" package.json

Flag grep yang Sering Dipakai

Flag Arti
-r Recursive (cari di subfolder)
-i Case-insensitive
-n Tampilkan nomor baris
-l Hanya tampilkan nama file (bukan isinya)
-c Hitung jumlah kecocokan per file
-v Invert (tampilkan yang TIDAK cocok)
-w Whole word (kata utuh, bukan substring)
-A N Tampilkan N baris setelah kecocokan
-B N Tampilkan N baris sebelum kecocokan
-C N Tampilkan N baris sebelum dan setelah

grep dengan Regex

# Cari baris yang dimulai dengan "import"
grep "^import" app.js

# Cari baris yang diakhiri ";"
grep ";
quot; app.js # Cari function dengan nama tertentu grep -E "function\s+\w+\(" src/*.js # Extended regex (-E) untuk pattern kompleks grep -E "(GET|POST|PUT|DELETE)" routes.js

ripgrep (rg) — grep Modern

Banyak developer beralih ke ripgrep karena lebih cepat dan smart:

# Sama dengan grep -r, tapi otomatis skip .gitignore
rg "TODO" src/

# Cari dengan tipe file tertentu
rg "useState" --type js

# Tampilkan context
rg "error" -C 3 server.log

# Case-insensitive
rg -i "warning" logs/

Contoh Workflow Pencarian

# Cari semua TODO di project
grep -rn "TODO\|FIXME\|HACK" src/

# Cari file yang mengandung console.log (untuk cleanup)
grep -rl "console.log" src/ --include="*.js"

# Cari fungsi yang belum diimplementasi
grep -rn "throw new Error.*not implemented" src/

# Cari semua import dari package tertentu
grep -rn "from .react-router" src/