Linux rm/rmdir命令

更多资料下载、嵌入式视频教程,加群:398294860,视频教程:www.wanglitao.taobao.com

当我们想要删除一个文件和目录时,可以使用rm或rmdir命令:

rm命令

rm命令用来删除一个文件或目录。

# rm filename     删除一个文件
# rm -r dirname   删除一个目录

当使用rm -r 命令删除一个目录时,该目录下的所有子目录、文件都会被删除。

当删除一个不存在的文件时,rm命令会显示一个错误信息:

# rm hello.c 
# rm hello.c
rm: cannot remove 'hello.c': No such file or directory

使用rm -f 参数,当删除一个不存在的文件时,可以忽略掉这个错误信息:

# rm hello.c
rm: cannot remove 'hello.c': No such file or directory
# rm -f hello.c
#

当我们只想删除某个目录下的所有文件,并不想删除这个目录时,可以使用下面的命令形式:

# tree
.
├── main.c
└── test
    ├── hello.c
    └── world.c

1 directory, 3 files
# rm -r test/*
# ls
main.c  test
# tree
.
├── main.c
└── test

1 directory, 1 file

如果你想在删除每个文件之前有一个提示,需要你输入Y确认,可以使用:rm -i参数

# rm -i test/*
rm: remove regular empty file 'test/hello.c'? y
rm: remove regular empty file 'test/world.c'? y

如果你想删除当前目录下的所有文件及目录,可以使用:

# rm -rf *

在Windows下删除一个文件,一般会先放到回收站里缓存,用户还可以还原。在Linux下删除文件,恢复比较麻烦,所以,如果你是一个新手,尽量少用类似 rm -rf *这样伤害性很大,侮辱性又极高的命令,至少,在敲击rm 之前,要明白你要删除的是什么,否则只能跑路了。

rmdir命令

rmdir命令用来删除一个空的目录。

# rmdir [-p] dirname

rmdir命令只能用来删除一个空目录,如果要删除的一个目录dirname下面还有子目录和文件,就会出现报错信息:

# tree
.
├── main.c
└── test
    ├── hello.c
    ├── sub-test
    └── world.c
2 directories, 3 files

# rmdir test/
rmdir: failed to remove 'test/': Directory not empty

使用rmdir -p 参数,将会依次删除空目录和空目录所对应的父目录、父父目录,直到遇到一个非空目录停止:

# tree
.
├── main.c
└── test
    ├── hello.c
    └── sub-test
        └── sub-sub-test
3 directories, 2 files

# rmdir -p test/sub-test/sub-sub-test/
rmdir: failed to remove directory 'test': Directory not empty

# tree
.
├── main.c
└── test
    └── hello.c
1 directory, 2 files

因为test目录下有一个hello.c文件,为非空目录,所以rmdir -p 递归到当前目录时就会停止删除操作,并给出一个报错信息。

《Linux三剑客》视频教程,从零开始快速掌握Linux开发常用的工具:Git、Makefile、vim、autotools、debug,免费赠送C语言视频教程,C语言项目实战:学生成绩管理系统。详情请点击淘宝链接:Linux三剑客