路漫漫其修远兮
吾将上下而求索

linux文件操作:rm命令

        rm:(remove)删除目录或文件,rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。

        rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。

1.命令格式:

        rm [选项] 文件… 

2.命令功能:

        删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。

3.命令参数:

        -f, –force    忽略不存在的文件,从不给出提示。

        -i, –interactive 进行交互式删除

        -r, -R, –recursive   指示rm将参数中列出的全部目录和子目录均递归地删除。

        -v, –verbose    详细显示进行的步骤

        –help     显示此帮助信息并退出

        –version  输出版本信息并退出

4. 常用范例:

例1:管理员使用的是交互式删除

[root@localhost ~]#ls
bin  scf  test
[root@localhost ~]#rm test    #不能删除目录,如果要删除目录,要加-r递归
rm: cannot remove `test': Is a directory
[root@localhost ~]#touch a b c 
[root@localhost ~]#rm a    #因为是管理员,这里的rm也是别名,使用的是交换的方式,会提醒是否删除
rm: remove regular empty file `a'? y
[root@localhost ~]#ls
b  bin  c  scf  test
[root@localhost ~]#\rm b    #如果使用/bin/rm命令,则不会进行提示,会直接删除,普通用户删除的时候不会提示
[root@localhost ~]#ls
bin  c  scf  test

alias显示

[root@localhost ~]#alias
alias rm='rm -i'

例2:强制删除

[root@localhost ~]#ls
a  b  bin  c  scf  test
[root@localhost ~]#rm -f a
[root@localhost ~]#ls
b  bin  c  scf  test

例3:递归删除,用于目录及子目录递归全部删除

[root@localhost ~]#rm -rv test
rm: descend into directory `test'? y
rm: remove directory `test/test1'? y
removed directory: `test/test1'
rm: remove directory `test'? y
removed directory: `test'
[root@localhost ~]#ls
b  bin  c  scf
[root@localhost ~]#rm -rvf scf
removed directory: `scf/lib'
removed directory: `scf/doc/info'
removed directory: `scf/doc/product'
removed directory: `scf/doc'
removed directory: `scf/bin'
removed directory: `scf'
[root@localhost ~]#

例4:危险操作,需谨慎,强制递归删除

[root@localhost ~]#mkdir -pv scf/{lib/,bin/,doc/{info,product}}
mkdir: created directory `scf'
mkdir: created directory `scf/lib/'
mkdir: created directory `scf/bin/'
mkdir: created directory `scf/doc'
mkdir: created directory `scf/doc/info'
mkdir: created directory `scf/doc/product'
[root@localhost ~]#ls
b  bin  c  scf
[root@localhost ~]#rm -rf scf    #强制递归删除
[root@localhost ~]#ls
b  bin  c

例5:自杀

[root@localhost ~]#rm -rf /*

例6:自定义回收站,比较保险,一般用这个命令代替rm命令,别名可以放在配置文件中,开机自启

[root@localhost ~]#cd /usr/local
[root@localhost /usr/local]#vim rmfiles.sh    #自己写个脚本
[root@localhost /usr/local]#cat rmfiles.sh 
#!/bin/bash
myrm(){ 
	D=/tmp/$(date +%Y%m%d-%H%M%S)
	mkdir -p $D 
	mv "$@" $D && echo "moved to $D ok"
}
myrm $@
[root@localhost /usr/local]#chmod +x rmfiles.sh 
[root@localhost /usr/local]#alias rmfile="/usr/local/rmfiles.sh"
[root@localhost /usr/local]#alias
alias rmfile='/usr/local/rmfiles.sh'

[root@localhost ~]#mkdir -pv scf/{lib/,bin/,doc/{info,product}}    #测试
mkdir: created directory `scf'
mkdir: created directory `scf/lib/'
mkdir: created directory `scf/bin/'
mkdir: created directory `scf/doc'
mkdir: created directory `scf/doc/info'
mkdir: created directory `scf/doc/product'
[root@localhost ~]#ls
b  bin  c  scf
[root@localhost ~]#rmfile scf
moved to /tmp/20170313-172921 ok
[root@localhost ~]#tree /tmp/20170313-172921/
/tmp/20170313-172921/
└── scf
    ├── bin
    ├── doc
    │   ├── info
    │   └── product
    └── lib

6 directories, 0 files

例7:删除的时候提示参数过长

find . -name "*" -print | xargs rm -rf 

如果文件名或文件夹名中有空格使用下列方法
find . -name "today*" -print0 | xargs -0 rm -rf
参数-print0,于默认的-print相比,输出的序列不是以空格分隔,而是以null字符分隔。而xargs也有一个参数-0,可以接受以null而非空格间隔的输入流

未经允许不得转载:江哥架构师笔记 » linux文件操作:rm命令

分享到:更多 ()

评论 抢沙发

评论前必须登录!