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/