Bird
Raised Fist0
Linux CLIscripting~5 mins

find with -exec for actions in Linux CLI - Time & Space Complexity

Choose your learning style10 modes available
Time Complexity: find with -exec for actions
O(n)
Understanding Time Complexity

When using the find command with -exec, we want to know how the time to complete grows as we search more files.

We ask: How does running an action on each found file affect total time?

Scenario Under Consideration

Analyze the time complexity of the following code snippet.

find /path/to/dir -type f -name "*.txt" -exec wc -l {} \;

This command finds all text files and runs wc -l to count lines in each file.

Identify Repeating Operations

Identify the loops, recursion, array traversals that repeat.

  • Primary operation: Running wc -l on each found file.
  • How many times: Once for every file that matches the search.
How Execution Grows With Input

As the number of matching files grows, the total work grows roughly the same way.

Input Size (n)Approx. Operations
1010 times running wc -l
100100 times running wc -l
10001000 times running wc -l

Pattern observation: The total time grows directly with the number of files found.

Final Time Complexity

Time Complexity: O(n)

This means the total time increases in a straight line as you add more files to process.

Common Mistake

[X] Wrong: "The -exec action runs only once regardless of files found."

[OK] Correct: Actually, -exec runs once for each matching file, so time grows with the number of files.

Interview Connect

Understanding how commands like find -exec scale helps you write scripts that handle many files efficiently and predict how long tasks will take.

Self-Check

What if we changed -exec to -exec ... + to run the action fewer times? How would the time complexity change?

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