Bird
Raised Fist0
Linux CLIscripting~5 mins

grep -r for recursive search in Linux CLI - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the -r option do in the grep command?
The -r option tells grep to search recursively through all files in the specified directory and its subdirectories.
Click to reveal answer
beginner
How would you use grep -r to find the word "apple" in all files inside the current directory and its subfolders?
You would run: grep -r "apple" . where . means the current directory.
Click to reveal answer
beginner
True or False: grep -r searches only text files by default.
False. grep -r searches all files, including binary files, unless you add options to exclude them.
Click to reveal answer
intermediate
What is the difference between grep -r and grep -R?
grep -r follows symbolic links only if they are on the command line, while grep -R follows all symbolic links recursively.
Click to reveal answer
intermediate
How can you limit grep -r to search only files with a specific extension, like .txt?
You can combine grep -r with --include="*.txt" like this: grep -r --include="*.txt" "pattern" .
Click to reveal answer
What does the command grep -r 'hello' /home/user do?
ALists all files in /home/user
BSearches for 'hello' in all files inside /home/user and its subdirectories
CDeletes files containing 'hello' in /home/user
DSearches for 'hello' only in the /home/user directory files, not subdirectories
Which option makes grep follow all symbolic links recursively?
A-v
B-r
C-i
D-R
How do you search recursively for the word 'error' only in files ending with '.log'?
Agrep -r 'error' --include='*.log' .
Bgrep 'error' *.log
Cgrep -r 'error' *.log
Dgrep --include='*.log' 'error'
True or False: grep -r will skip binary files by default.
AFalse
BTrue
COnly on Linux
DOnly with extra options
What symbol represents the current directory when using grep -r?
A~
B/
C.
D..
Explain how to use grep -r to find a word inside all files in a folder and its subfolders.
Think about how to tell grep to look inside folders and subfolders.
You got /4 concepts.
    Describe the difference between grep -r and grep -R regarding symbolic links.
    Consider how each option treats links to other files or folders.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the command grep -r 'error' /var/log do?
      easy
      A. Searches recursively for the word 'error' inside all files in /var/log and its subfolders.
      B. Searches only the /var/log folder for files named 'error'.
      C. Deletes all files containing the word 'error' in /var/log.
      D. Lists all files in /var/log that have the word 'error' in their name.

      Solution

      1. Step 1: Understand the grep -r option

        The -r flag tells grep to search recursively inside all files in the given directory and its subdirectories.
      2. Step 2: Analyze the command arguments

        The command searches for the text 'error' inside all files under the /var/log directory and its subfolders.
      3. Final Answer:

        Searches recursively for the word 'error' inside all files in /var/log and its subfolders. -> Option A
      4. Quick Check:

        grep -r means recursive search [OK]
      Hint: Remember: -r means search inside folders and subfolders [OK]
      Common Mistakes:
      • Thinking -r searches only filenames, not file contents
      • Confusing grep with delete or list commands
      • Ignoring the folder path argument
      2. Which of the following is the correct syntax to recursively search for the word 'config' in the current directory?
      easy
      A. grep . -r config
      B. grep config -r .
      C. grep -r . config
      D. grep -r config .

      Solution

      1. Step 1: Recall grep syntax

        The correct syntax is grep [options] pattern path. The -r option comes before the pattern.
      2. Step 2: Match the correct order

        grep -r config . uses grep -r config . which means search recursively for 'config' in current directory ('.').
      3. Final Answer:

        grep -r config . -> Option D
      4. Quick Check:

        Options order: grep -r pattern path [OK]
      Hint: Options come before pattern and path in grep command [OK]
      Common Mistakes:
      • Placing -r after the pattern or path
      • Swapping pattern and path arguments
      • Using dot (.) in wrong position
      3. Given this folder structure and files:
      ./docs/readme.txt (contains 'install')
      ./src/app.py (contains 'install')
      ./src/utils.py (no 'install')

      What is the output of grep -r 'install' ./?
      medium
      A. ./docs/readme.txt:install ./src/app.py:install
      B. ./docs/readme.txt:install
      C. ./src/utils.py:install
      D. No output

      Solution

      1. Step 1: Understand recursive search

        The command searches all files under current folder (./) and subfolders for the word 'install'.
      2. Step 2: Identify matching files

        Both readme.txt and app.py contain 'install', so their lines are printed with filenames.
      3. Final Answer:

        ./docs/readme.txt:install ./src/app.py:install -> Option A
      4. Quick Check:

        grep -r finds all matching lines with filenames [OK]
      Hint: grep -r shows filename:line for all matches [OK]
      Common Mistakes:
      • Expecting only filenames without matching lines
      • Assuming files without the word appear in output
      • Ignoring recursive search in subfolders
      4. You run grep 'TODO' /project but get an error: grep: /project: Is a directory. What is the likely cause?
      medium
      A. You forgot to add the -r option for recursive search.
      B. You used the wrong quotes around TODO.
      C. You used grep without the -r option but gave a directory path.
      D. You ran grep without specifying the directory path.

      Solution

      1. Step 1: Analyze the error message

        The error says grep treats /project as a file, but it is a directory.
      2. Step 2: Understand grep behavior

        Without -r, grep cannot search inside directories and errors out when given a directory path.
      3. Final Answer:

        You used grep without the -r option but gave a directory path. -> Option C
      4. Quick Check:

        grep needs -r to search directories [OK]
      Hint: Use -r to avoid directory errors when searching folders [OK]
      Common Mistakes:
      • Assuming quotes cause the error
      • Thinking -r was forgotten when it was used
      • Not specifying directory path at all
      5. You want to find all files under /home/user/projects containing the word 'fixme' but exclude any files in node_modules subfolders. Which command achieves this?
      hard
      A. grep -r 'fixme' /home/user/projects | grep -v node_modules
      B. grep -r --exclude-dir=node_modules 'fixme' /home/user/projects
      C. grep -r --exclude='node_modules' 'fixme' /home/user/projects
      D. grep -r --exclude-dir='fixme' /home/user/projects

      Solution

      1. Step 1: Understand the requirement

        You want recursive search for 'fixme' but skip directories named 'node_modules'.
      2. Step 2: Use correct grep option to exclude directories

        The --exclude-dir=node_modules option tells grep to skip those folders during recursive search.
      3. Step 3: Check other options

        grep -r 'fixme' /home/user/projects | grep -v node_modules filters output but still searches inside node_modules, which is inefficient. grep -r --exclude='node_modules' 'fixme' /home/user/projects excludes files named 'node_modules' not directories. grep -r --exclude-dir='fixme' /home/user/projects excludes directories named 'fixme' which is wrong.
      4. Final Answer:

        grep -r --exclude-dir=node_modules 'fixme' /home/user/projects -> Option B
      5. Quick Check:

        Use --exclude-dir to skip folders in recursive grep [OK]
      Hint: Use --exclude-dir to skip folders during recursive grep [OK]
      Common Mistakes:
      • Using --exclude instead of --exclude-dir for directories
      • Filtering output instead of excluding directories
      • Wrong option names or misplaced quotes
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard