---
name: "rm"
section: "1"
platform: "linux"
package: "coreutils"
version: "9.12-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd", "openbsd", "macos"]
url: "https://new.carta.tech/rm"
---

# rm(1)

remove files or directories

## NAME

rm - remove files or directories

## SYNOPSIS

**rm** \[*OPTION*\]... \[*FILE*\]...

## DESCRIPTION

This manual page documents the GNU version of **rm**. **rm** removes each specified file.  By default, it does not remove directories.

If the *-I* or *--interactive=once* option is given, and there are more than three files or the *-r*, *-R*, or *--recursive* are given, then **rm** prompts the user for whether to proceed with the entire operation.  If the response is not affirmative, the entire command is aborted.

Otherwise, if a file is unwritable, standard input is a terminal, and the *-f* or *--force* option is not given, or the *-i* or *--interactive=always* option is given, **rm** prompts the user for whether to remove the file.  If the response is not affirmative, the file is skipped.

## OPTIONS

Remove (unlink) the FILE(s).

- **-f, --force**

  ignore nonexistent files and arguments, never prompt

- **-i**

  prompt before every removal

- **-I**

  prompt once before removing more than three files, or when removing recursively; less intrusive than **-i**, while still giving protection against most mistakes

- **--interactive\[=WHEN\]**

  prompt according to WHEN: never, once (**-I**), or always (**-i**); without WHEN, prompt always

- **--one-file-system**

  when removing a hierarchy recursively, skip any directory that is on a file system different from that of the corresponding command line argument

- **--no-preserve-root**

  do not treat '/' specially

- **--preserve-root\[=all\]**

  do not remove '/' (default); with 'all', reject any command line argument on a separate device from its parent

- **-r, -R, --recursive**

  remove directories and their contents recursively

- **-d, --dir**

  remove empty directories

- **-v, --verbose**

  explain what is being done

- **--help**

  display this help and exit

- **--version**

  output version information and exit

By default, rm does not remove directories.  Use the **--recursive** (**-r** or **-R**) option to remove each listed directory, too, along with all of its contents.

Any attempt to remove a file whose last file name component is '.' or '..' is rejected with a diagnostic.

To remove a file whose name starts with a '-', for example '-foo', use one of these commands:

-

  rm **--** **-foo**

-

  rm ./-foo

If you use rm to remove a file, it might be possible to recover some of its contents, given sufficient expertise and/or time.  For greater assurance that the contents are unrecoverable, consider using [**shred**(1)](/shred/1.md).

## AUTHOR

Written by Paul Rubin, David MacKenzie, Richard M. Stallman, and Jim Meyering.

## REPORTING BUGS

Report bugs to: \<bug-coreutils@gnu.org\>.\
 Report any translation bugs to: \<https://translationproject.org/team/\>.\
 GNU coreutils home page: \<https://www.gnu.org/software/coreutils/\>\
 General help using GNU software: \<https://www.gnu.org/gethelp/\>

## COPYRIGHT

Copyright © 2026 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later \<https://gnu.org/licenses/gpl.html\>.\
 This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

## SEE ALSO

[**unlink**(1)](/unlink/1.md), [**unlink**(2)](/unlink/2.md), [**chattr**(1)](/chattr/1.md), [**shred**(1)](/shred/1.md)

Full documentation \<https://www.gnu.org/software/coreutils/rm\>\
 or available locally via: info '(coreutils) rm invocation'
