Linux中删除文件

简介: Linux中删除文件

在LINUX中,经常要删除文件,大多时候使用rm命令就足以应付了,有的时候需要用-f,强制删除,碰到有子目录的时候,需要加-r参数,也就是说,不考虑安全问题,rm -rf filename就可以解决绝大部分问题.先看下rm的一般用法:

也就是说,大多情况下:

方法一: rm file       # 直接删除

方法二: rm -i file     # 删前提示

方法三: rm -f file     # 强制删除

方法四: rm -rf /dir    # 递归删除

但是,经常在删除文件时会碰到Device or Resource is busy的情况,这个时候尝试用下面的方法:

 

方法五: 使用ps和kill命令查看并删除相应的进程,时候再执行rm删除操作

方法六: 使用lsof命令查看使用该文件并用kill删除,再执行rm操作

方法七: 使用fuser -kvm /mnt/test命令,再执行rm操作

    -k参数: 缩写kill

    -v参数: 详细输出

    -m参数: 表面指定的路径为挂载点

方法八: 使用find命令结合-exec命令来删除

$ find /tmp -type f -exec rm -rf {} \;

方法九: 使用find命令结合xargs命令来删除

$ find /tmp -type f | xargs rm -rf

增量删除】:

$ mkdir {dirA,dirB}             # 创建测试目录

$ touch dirA/{A1,A2,A3}   # dirA创建三个文件A1,A2,A3

$ touch dirB/{B1,B2,B3}     # dirA创建三个文件B1,B2,B3

目录结构如下:

1) dirA的所有文件同步到dirB内,并保留文件的属主,属组,文件权限等信息:

$ rsync -avz dirA/ dirB/

2) dirA的所有文件同步到dirB内,并删除dirB内多余的文件

$ rsync -avz --delete dirA/ dirB/

3) dirA的所有文件同步到dirB,但是在dirB内除了B3这个文件不删之外,其他的都删除

$ rsync -avz --delete --exclude='B3' dirA/ dirB/

4) dirA目录内的A1.txt和A2.txt不同步到dirB目录内

$ rsync -avz --exclude='A1' --exclude='A2' dirA/ dirB/

5) dirA目录内的A1和A2不同步到dirB目录内,并且在dirB目录内删除多余的文件

$ rsync -avz --exclude='A1' --exclude='A2'  --delete dirA/ dirB/

6) dirA目录内的A1和A2不同步到dirB目录内,并且在dirB目录内删除多余的文件,同时,如果dirB内有A2和A1这两个被排除同步的文件,仍然将其删除

$ rsync -avz --exclude='A1' --exclude='A2' --delete-excluded dirA/ dirB/

海量删除】:

有时候文件太多,执行rm –rf file* 会报错,进行不下去,这个时候,同样要考虑到rsync同步删除操作,且高效快速,其思路,建一个空目录作为中转,再删除:

rsync --delete-before -avH --progress --stats /tmp/ /yourdir/

-a:       归档模式

-v:       显示全部过程

-H:       保持硬链接文件

-progress    在传输时显示传输过程

 

这几种方法的使用,几乎可以解决删除操作中碰到的任何问题,但有几点必须注意的问题:

1). 有挂载点的情况下,一定要执行umount操作

2). 不要删除目录的下,执行删除的操作,很愚蠢,不是嘛?

3). 如果执行rm -rf /dir1/dir2/dir3/*.*删除不掉的话,尝试删除其父目录rm -rf /dir1/dir2

相关文章
|
3月前
|
算法 Linux API
【Linux系统编程】Linux下删除文件的 API方式以及文件删除机制差异
【Linux系统编程】Linux下删除文件的 API方式以及文件删除机制差异
79 0
|
3月前
|
存储 Shell Linux
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
【Shell 命令集合 磁盘管理 】Linux 从远程磁带设备中删除文件或目录rmt命令使用教程
46 0
|
9月前
|
Linux
Linux rm命令:删除文件或目录
当 Linux 系统使用很长时间之后,可能会有一些已经没用的文件(即垃圾),这些文件不但会消耗宝贵的硬盘资源,还是降低系统的运行效率,因此需要及时地清理。 rm 是强大的删除命令,它可以永久性地删除文件系统中指定的文件或目录。在使用 rm 命令删除文件或目录时,系统不会产生任何提示信息。此命令的基本格式为: [root@localhost ~]# rm[选项] 文件或目录 -f:强制删除(force),和 -i 选项相反,使用 -f,系统将不再询问,而是直接删除目标文件或目录。 -i:和 -f 正好相反,在删除文件或目录之前,系统会给出提示信息,使用 -i 可以有效防止不小心删除有用的
172 1
|
2月前
|
Linux
12. 【Linux教程】删除文件和目录
12. 【Linux教程】删除文件和目录
20 0
|
3月前
|
Linux
linux 如何删除文件中的空格和换行符号并保存到新文件中
linux 如何删除文件中的空格和换行符号并保存到新文件中
32 0
|
3月前
|
Linux
在 Linux 中删除文件和文件夹
在 Linux 中删除文件和文件夹
|
3月前
|
Linux
linux无法删除文件的时候先看看文件属性
linux无法删除文件的时候先看看文件属性
34 2
|
3月前
|
Linux Shell C语言
Linux编程之删除文件时排除某个文件
Linux编程之删除文件时排除某个文件
63 0
|
10月前
17Linux - 文件管理(删除文件:rm)
17Linux - 文件管理(删除文件:rm)
30 0
|
10月前
|
Linux