Bird
Raised Fist0
Linux CLIscripting~20 mins

find with -exec for actions in Linux CLI - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Find with Exec Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
2:00remaining
Output of find with -exec to list files
What is the output of this command if the current directory contains files file1.txt and file2.log only?

find . -name '*.txt' -exec ls -l {} \;
Linux CLI
find . -name '*.txt' -exec ls -l {} \;
ANo output, command fails
BLists detailed info of file2.log only
CLists detailed info of file1.txt only
DLists detailed info of both file1.txt and file2.log
Attempts:
2 left
💡 Hint
The command finds files ending with .txt and runs ls -l on each.
💻 Command Output
intermediate
2:00remaining
Effect of find with -exec rm on files
Given a directory with files a.txt, b.txt, and c.log, what files remain after running?

find . -name '*.txt' -exec rm {} \;
Linux CLI
find . -name '*.txt' -exec rm {} \;
AOnly c.log remains
BAll files remain
COnly a.txt remains
DOnly b.txt remains
Attempts:
2 left
💡 Hint
The command deletes files ending with .txt.
📝 Syntax
advanced
2:00remaining
Correct syntax for find with -exec to move files
Which option correctly moves all .log files to /backup using find with -exec?
Afind . -name '*.log' -exec mv {} /backup \;
Bfind . -name '*.log' -exec mv {} /backup ;
Cfind . -name '*.log' -exec mv {} /backup \
Dfind . -name '*.log' -exec mv {} /backup
Attempts:
2 left
💡 Hint
The -exec command must end with an escaped semicolon.
🔧 Debug
advanced
2:00remaining
Why does this find with -exec command fail?
This command is intended to compress all .txt files with gzip:

find . -name '*.txt' -exec gzip {} ;

Why does it fail?
Linux CLI
find . -name '*.txt' -exec gzip {} ;
AThe find command needs -print before -exec
Bgzip command does not accept file arguments
CThe wildcard '*.txt' is not quoted
DMissing escape before semicolon causes syntax error
Attempts:
2 left
💡 Hint
Check how the semicolon is written at the end of -exec.
🚀 Application
expert
3:00remaining
Count files modified in last 7 days and delete them
Which command correctly finds files modified in the last 7 days and deletes them safely using find with -exec?
Afind . -type f -mtime 7 -exec rm {} \;
Bfind . -type f -mtime -7 -exec rm -i {} \;
Cfind . -type f -mtime +7 -exec rm -f {} \;
Dfind . -mtime -7 -exec rm {}
Attempts:
2 left
💡 Hint
Use -mtime with negative value for files modified within last N days and confirm deletion.

Practice

(1/5)
1. What does the -exec option do in the find command?
easy
A. Changes the permissions of files found automatically.
B. Runs a specified command on each file found by find.
C. Lists only directories found by find.
D. Deletes all files found without confirmation.

Solution

  1. Step 1: Understand the purpose of -exec

    The -exec option in find runs a command on each file found by the search.
  2. Step 2: Differentiate from other options

    It does not delete, list only directories, or change permissions by itself; it just runs the given command.
  3. Final Answer:

    Runs a specified command on each file found by find. -> Option B
  4. Quick Check:

    -exec runs commands on found files [OK]
Hint: Remember: -exec means "execute command" on files [OK]
Common Mistakes:
  • Thinking -exec deletes files automatically
  • Confusing -exec with listing or filtering options
  • Forgetting to end -exec command with \;
2. Which of the following is the correct syntax to delete all .log files using find with -exec?
easy
A. find . -name '*.log' -exec rm {}
B. find . -name '*.log' -exec rm {} ;
C. find . -name '*.log' -exec rm {} \;
D. find . -name '*.log' -exec rm \;

Solution

  1. Step 1: Identify correct -exec ending

    The -exec command must end with \; to mark the end of the command.
  2. Step 2: Check command correctness

    find . -name '*.log' -exec rm {} \; correctly uses rm {} and ends with \;. Other options miss the backslash or semicolon or both.
  3. Final Answer:

    find . -name '*.log' -exec rm {} \; -> Option C
  4. Quick Check:

    Correct -exec ends with \; [OK]
Hint: Always end -exec commands with \; [OK]
Common Mistakes:
  • Omitting the backslash before semicolon
  • Leaving out the semicolon entirely
  • Not using {} as placeholder for file name
3. What will be the output of this command?
find /tmp -type f -name '*.txt' -exec echo File: {} \;
medium
A. Deletes all .txt files in /tmp directory.
B. Shows an error because echo cannot be used with -exec.
C. Lists only the names of .txt files without path.
D. Prints 'File: ' followed by each .txt file path found in /tmp.

Solution

  1. Step 1: Understand the command

    The command finds all files ending with .txt in /tmp and runs echo File: {} on each.
  2. Step 2: Predict output

    For each file found, it prints "File: " followed by the full file path (because {} is replaced by the path).
  3. Final Answer:

    Prints 'File: ' followed by each .txt file path found in /tmp. -> Option D
  4. Quick Check:

    -exec echo File: {} prints file paths [OK]
Hint: Remember {} is replaced by each file path found [OK]
Common Mistakes:
  • Thinking it deletes files
  • Assuming only file names print without path
  • Believing echo can't be used with -exec
4. Identify the error in this command:
find /var/log -name '*.log' -exec gzip {} ;
medium
A. Missing backslash before semicolon in -exec ending.
B. Incorrect use of quotes around '*.log'.
C. Using gzip instead of gunzip.
D. No error; command is correct.

Solution

  1. Step 1: Check -exec syntax

    The -exec command must end with \;, not just ;.
  2. Step 2: Validate other parts

    Quotes around '*.log' are correct, and gzip is appropriate to compress logs.
  3. Final Answer:

    Missing backslash before semicolon in -exec ending. -> Option A
  4. Quick Check:

    -exec must end with \; [OK]
Hint: Check for \ before ; to end -exec [OK]
Common Mistakes:
  • Using ; without backslash
  • Confusing compression commands
  • Removing quotes around patterns
5. You want to find all files larger than 5MB in /home/user and change their permissions to 644. Which command correctly uses find with -exec to do this?
hard
A. find /home/user -size +5M -exec chmod 644 {} \;
B. find /home/user -size +5M -exec chmod 644 {} ;
C. find /home/user -size +5M -exec chmod 644 \;
D. find /home/user -size +5M -exec chmod 644 {}

Solution

  1. Step 1: Understand size filter and command

    -size +5M finds files larger than 5MB. chmod 644 {} changes permissions of each found file.
  2. Step 2: Confirm correct -exec syntax

    The command must end with \; to mark the end of the -exec action. find /home/user -size +5M -exec chmod 644 {} \; correctly includes this.
  3. Final Answer:

    find /home/user -size +5M -exec chmod 644 {} \; -> Option A
  4. Quick Check:

    Use -exec with {} and end with \; [OK]
Hint: Use {} for file and end -exec with \; [OK]
Common Mistakes:
  • Omitting {} placeholder
  • Missing backslash before semicolon
  • Leaving out semicolon entirely
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