Bird
Raised Fist0
Linux CLIscripting~10 mins

grep -r for recursive search in Linux CLI - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to search recursively for the word 'error' in all files.

Linux CLI
grep [1] error *
Drag options to blanks, or click blank then click option'
A-i
B-n
C-v
D-r
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-i' which ignores case but does not search recursively.
Using '-v' which inverts the match.
Using '-n' which shows line numbers but not recursive search.
2fill in blank
medium

Complete the code to recursively search for 'TODO' in the current directory and all subdirectories.

Linux CLI
grep [1] TODO .
Drag options to blanks, or click blank then click option'
A-l
B-r
C-c
D-q
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-l' which lists filenames but does not search recursively.
Using '-c' which counts matches but does not search recursively.
Using '-q' which suppresses output.
3fill in blank
hard

Fix the error in the command to recursively search for 'main' ignoring case.

Linux CLI
grep -r [1] main ./src
Drag options to blanks, or click blank then click option'
A-n
B-v
C-i
D-c
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-v' which inverts the match.
Using '-n' which shows line numbers but does not ignore case.
Using '-c' which counts matches but does not ignore case.
4fill in blank
hard

Fill both blanks to recursively search for 'config' and show line numbers.

Linux CLI
grep [1] [2] config /etc
Drag options to blanks, or click blank then click option'
A-r
B-i
C-n
D-v
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-v' which inverts matches instead of showing line numbers.
Using '-i' which ignores case but does not show line numbers.
5fill in blank
hard

Fill all three blanks to recursively search for 'error' ignoring case and show filenames only.

Linux CLI
grep [1] [2] [3] error /var/log
Drag options to blanks, or click blank then click option'
A-r
B-i
C-l
D-n
Attempts:
3 left
💡 Hint
Common Mistakes
Using '-n' which shows line numbers instead of filenames.
Mixing up the order of options but order does not affect grep.

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