Use Grep for Fast Search from the Command Line

Brought by: egghead.io

Overview

CMD+F in your text editor can only get you so far! In this course, we will learn to use grep and find, two powerful command-line utilities, to search through and explore our codebase. Learn to search specific files and folders, using regular expressions to look for -- or ignore! -- particular phrases. We'll cover how to search recursively, get more context on your results, and some simple tricks to make your searches faster and more targeted.
Once you're familiar with grep and find, you'll be able to quickly answer questions such as: Do I use this function anywhere other than my tests? Where does this file get imported? Whether you're working on a new feature, reading a codebase for the first time, or refactoring existing code, grep and find can help you work faster and more effectively.

Syllabus

  • Search the contents of files using grep
  • Search directory contents recursively using grep
  • Use find to search for filename patterns
  • Search matching files by combining find and grep with xargs
  • Search the contents of a git repository with git grep
  • Show context around matches using grep
  • Search for basic patterns using grep
  • Use grep's extended regular expressions to find complex patterns
  • Search for optional patterns with grep OR
  • Specify line beginning and end in patterns using grep
  • Match classes of characters using bracket expressions with grep
  • Search with groups using grep
  • Find matches excluding a pattern with grep

Taught by

Bonnie Eisenman

Use Grep for Fast Search from the Command Line
Go to course

Use Grep for Fast Search from the Command Line

Brought by: egghead.io

  • egghead.io
  • Paid
  • English
  • Certificate Not Available
  • Available at any time
  • All
  • N/A
8.1.2PHP Version1.14sRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (744ms)
    • Application (394ms)
    • 1 x Booting (65.2%)
      744.44ms
      1 x Application (34.55%)
      394.40ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed10.5ms
      • select * from `courses` where `slug_en` = 'use-grep-for-fast-search-from-the-command-line' limit 1
        8.98ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. use-grep-for-fast-search-from-the-command-line
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-06-28 12:23:37' where `id` = 2120
        640μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-28 12:23:37
        • 1. 2120
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (29)
        250μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        180μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (29) and `providers`.`deleted_at` is null
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 2111 limit 1
        260μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2111
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        o8o5ySiYIgWRAiIRVliZCHpIhiEzx2D0dJWFIbVJ
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/use-grep-for-fast-search-from-the-command...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/use-grep-for-fast-search-from-the-command-line
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.68" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.68" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "956d28053d665973-IAD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.68" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.68" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "956d28053d665973-IAD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "17502" "REMOTE_ADDR" => "172.70.34.217" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/en/courses/use-grep-for-fast-search-from-the-command-line" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1751113416.7551 "REQUEST_TIME" => 1751113416 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 28 Jun 2025 12:23:37 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InE3bldpWnVaV0FHQmErODBHV1A4WUE9PSIsInZhbHVlIjoiNDFxZC9tYS84MXBYOTRpOXJIalBFYkNzbm5vK0p6Si95SVUrcWZ6bVhXYXEzNHFjRyt5cC9vektRZFlDdm5oZ0d1cE9ZSFNvUEVDSjVodWtQSmJXaXg4UEZic0tMcjFXUGNwK2huREhOblJzOTl2L2hNU2l2UGtHWVRoTFErc1YiLCJtYWMiOiI0ZDFlMGVjYjIyNGU2NDM2MDc5NWZiMGFhNGU0NTcyMWM3YmY1Y2NlZTkwMmUyODE5MzgzNDE0OTJjZmE5NTZlIiwidGFnIjoiIn0%3D; expires=Sat, 28 Jun 2025 14:23:37 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6InE3bldpWnVaV0FHQmErODBHV1A4WUE9PSIsInZhbHVlIjoiNDFxZC9tYS84MXBYOTRpOXJIalBFYkNzbm5vK0p6Si95SVUrcWZ6bVhXYXEzNHFjRyt5cC9vektRZFlDdm5oZ0d1cE9ZS" 1 => "laravel_session=eyJpdiI6InBuVmVob0lDZFZiQXcyTXNlRFpkU1E9PSIsInZhbHVlIjoidzl0LzJzT3lQN0FwNkV4MnREWTcyM2lCZ2Z4TXVWZ3IxcFhJb0FGOVF3SDdwNVg5VEN2by9VQVR3OWF0L0JIYk1vdlVrSkx4QnptVUM5cHBObFhUbDZUdmJ5a21PUXRaZUZjYWxDQ2l2dGovWXh1QjJFRW1KejFDZHcyVUtUVW0iLCJtYWMiOiJkOTRmMDI4NTQzMTU4MzM3MWUzNmZkMWE0ZmRjMDU3ZDEyN2FiODZmNGYxNzNkMTA4YTBkYjc5ZWMzODcyZDBiIiwidGFnIjoiIn0%3D; expires=Sat, 28 Jun 2025 14:23:37 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6InBuVmVob0lDZFZiQXcyTXNlRFpkU1E9PSIsInZhbHVlIjoidzl0LzJzT3lQN0FwNkV4MnREWTcyM2lCZ2Z4TXVWZ3IxcFhJb0FGOVF3SDdwNVg5VEN2by9VQVR3OWF0L0JIYk1v" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InE3bldpWnVaV0FHQmErODBHV1A4WUE9PSIsInZhbHVlIjoiNDFxZC9tYS84MXBYOTRpOXJIalBFYkNzbm5vK0p6Si95SVUrcWZ6bVhXYXEzNHFjRyt5cC9vektRZFlDdm5oZ0d1cE9ZSFNvUEVDSjVodWtQSmJXaXg4UEZic0tMcjFXUGNwK2huREhOblJzOTl2L2hNU2l2UGtHWVRoTFErc1YiLCJtYWMiOiI0ZDFlMGVjYjIyNGU2NDM2MDc5NWZiMGFhNGU0NTcyMWM3YmY1Y2NlZTkwMmUyODE5MzgzNDE0OTJjZmE5NTZlIiwidGFnIjoiIn0%3D; expires=Sat, 28-Jun-2025 14:23:37 GMT; path=/XSRF-TOKEN=eyJpdiI6InE3bldpWnVaV0FHQmErODBHV1A4WUE9PSIsInZhbHVlIjoiNDFxZC9tYS84MXBYOTRpOXJIalBFYkNzbm5vK0p6Si95SVUrcWZ6bVhXYXEzNHFjRyt5cC9vektRZFlDdm5oZ0d1cE9ZS" 1 => "laravel_session=eyJpdiI6InBuVmVob0lDZFZiQXcyTXNlRFpkU1E9PSIsInZhbHVlIjoidzl0LzJzT3lQN0FwNkV4MnREWTcyM2lCZ2Z4TXVWZ3IxcFhJb0FGOVF3SDdwNVg5VEN2by9VQVR3OWF0L0JIYk1vdlVrSkx4QnptVUM5cHBObFhUbDZUdmJ5a21PUXRaZUZjYWxDQ2l2dGovWXh1QjJFRW1KejFDZHcyVUtUVW0iLCJtYWMiOiJkOTRmMDI4NTQzMTU4MzM3MWUzNmZkMWE0ZmRjMDU3ZDEyN2FiODZmNGYxNzNkMTA4YTBkYjc5ZWMzODcyZDBiIiwidGFnIjoiIn0%3D; expires=Sat, 28-Jun-2025 14:23:37 GMT; path=/; httponlylaravel_session=eyJpdiI6InBuVmVob0lDZFZiQXcyTXNlRFpkU1E9PSIsInZhbHVlIjoidzl0LzJzT3lQN0FwNkV4MnREWTcyM2lCZ2Z4TXVWZ3IxcFhJb0FGOVF3SDdwNVg5VEN2by9VQVR3OWF0L0JIYk1v" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "o8o5ySiYIgWRAiIRVliZCHpIhiEzx2D0dJWFIbVJ" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/use-grep-for-fast-search-from-the-command-line" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]