To use two commands after the find command in Linux, you can utilize the -exec option multiple times or combine commands in a single execution. Here are the methods you can use:

Method 1: Using Multiple -exec Options

You can execute multiple commands sequentially by using the -exec option more than once. Each command will be executed for each file found. For example:

find . -name "*.txt" -exec wc -l {} \; -exec file {} \;

Explanation:

  • This command finds all .txt files in the current directory and its subdirectories.
  • The first -exec runs wc -l {} to count the lines in each file.
  • The second -exec runs file {} to display the file type.
  • The {} is replaced with the path of each found file.

Why \;

its because linux shell use ; as the command seperator. example

ls;who

  • find can have more exec commands
  • so to avoid linux shell interprinting ; as the command seperator we use \ . that’s way it will stay inside the same find command. find can identify it as a seprate exec command in it.

Another Example

Method 2: Using a Combined Command with Bash

If you want to run multiple commands in a single execution context, you can use a shell command. This is useful when you want to run more complex sequences of commands:

find . -name "*.txt" -exec bash -c 'wc -l "$0"; file "$0"' {} \;

Explanation:

  • Here, bash -c allows you to run multiple commands as part of a script.
  • The $0 refers to the filename passed from the find command.
  • Both commands will be executed for each found file.

Method 3: Using Boolean Expressions

You can also use boolean expressions to control the flow of command execution:

find . -name "*.txt" \( -exec wc -l {} \; -o -true \) -exec file {} \;

Explanation:

  • The $$ ... $$ groups the commands, and -o acts as a logical OR.
  • This allows the second command (file {}) to run regardless of whether the first command (wc) succeeds.

These methods provide flexibility in executing multiple commands based on the results of the find command, allowing for efficient file processing in Linux.