Skip to content


  • Remove everything except certain folder or file
rm -rf -v !("fileorfolder")
rm -rf -v !("filename1"|"filename2")
  • Remove all files except .zip files
rm -i !(*.zip)
  • Remove all files except .zip and .odt files
rm -v !(*.zip|*.odt)


rm -v test/!(t3)
Bash Session
removed 'test/t1'
removed 'test/t2'
removed 'test/t4'
removed 'test/t5'
removed 'test/t6'
Bash Session
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

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

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

        do not treat '/' specially

        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

--help  display this help and exit

        explain what is being done

        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.

        rm -- -foo

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