---
name: "apply"
section: "1"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/apply"
---

# apply(1)

apply a command to a set of arguments

## NAME

**apply** – apply a command to a set of arguments

## SYNOPSIS

**apply** \[**-***#*\] \[**-d**\] \[**-a** *magic*\] *command* *argument* *...*

## DESCRIPTION

**apply** runs the named *command* on each given *argument* in turn.

Character sequences of the form “%d” in *command*, where ‘d’ is a digit from 1 to 9, are replaced by the d'th following unused *argument*. In this case, the largest digit number of arguments are discarded for each execution of *command*.

The options are as follows:

- **-***#*

  Normally arguments are taken singly; the optional number **-***#* specifies the number of arguments to be passed to *command*. If the number is zero, *command* is run, without arguments, once for each *argument*.

  If any sequences of “%d” occur in *command*, the **-***#* option is ignored.

- **-a** *magic*

  Use *magic* as the magic character instead of the default ‘%’.

- **-d**

  Debug mode. Print commands to the standard output but do not actually execute them.

## ENVIRONMENT

- SHELL

  Pathname of shell to use. If this variable is not defined, the Bourne shell is used.

## FILES

- */bin/sh*

  default shell

## EXAMPLES

Operate similar to [ls(1)](/ls/1.md):

```
$ apply echo *
```

Compare the *a\** files to the *b\** files:

```
$ apply -2 cmp a1 b1 a2 b2 a3 b3
```

Run [who(1)](/who/1.md) five times:

```
$ apply -0 who 1 2 3 4 5
```

Link all files in the current directory to the directory */home/joe*:

```
$ apply 'ln %1 /home/joe' *
```

## SEE ALSO

[sh(1)](/sh/1.md), [xargs(1)](/xargs/1.md)

## HISTORY

The **apply** command appeared in 4.2BSD.

## AUTHORS

Rob Pike

## BUGS

Shell metacharacters in *command* may have bizarre effects; it is best to enclose complicated commands in single quotes ('').
