Linux/UNIX删除文件

时间:2020-01-09 10:40:29  来源:igfitidea点击:

如何使用命令行选项在Linux/UNIX/\ * BSD/AIX/HP-UX操作系统下删除文件?
要在Linux,FreeBSD,Solaris,macOS或类似Unix的操作系统中删除文件或目录,请使用rm命令或unlink命令。
本教程说明如何使用命令行选项在Linux或Unix之类的系统上删除给定文件。

语法:rm命令删除文件

rm(删除(remove)的缩写)是Unix/Linux命令,用于从文件系统中删除文件。
通常,在大多数文件系统上,删除文件需要对父目录具有写权限(并具有执行权限,以便首先进入目录)。
删除指定文件和目录的语法如下:

rm {file-name}
rm [options] {file-name}
unlink {file-name}
rm -f -r {file-name}

其中:

  • -f:强制删除文件
  • -r:递归删除目录的内容

当rm命令仅与文件名一起使用时,rm删除所有给定的文件,而无需用户确认。

警告:注意文件名,默认情况下是Unix和Linux,在删除文件之前不会提示您进行确认。
始终保留所有关键文件和数据的经过验证的备份。

Unix删除文件示例

假设您有一个名为abc.txt的文件,并且想要删除它:

$ rm abc.txt

Linux删除多个文件

删除三个名为foo.mp4,bar.doc和demo.txt的文件,运行:

rm foo.mp4 bar.doc demo.txt
ls

Linux递归删除所有文件

从目录中删除所有文件和子目录(例如,从MS-DOS world中删除deltree like命令),执行:

$ rm -rf mydir

Linux删除文件并在每次删除前提示

要在尝试删除每个文件之前请求确认,请将-i选项传递给rm命令:

$ rm -i filename

通过-I选项仅提示一次,然后再删除三个以上的文件,但仍然可以防止cli中的许多错误:

$ rm -I foo.conf bar.conf resume.doc cakeday.png
$ rm -I -r -f ~/olddata/

强制执行rm命令以说明文件正在执行的操作

通过-v选项,如下所示:

$ rm -v moiz.list.txt bios-updates.doc 
removed 'moiz.list.txt'
removed 'bios-updates.doc'

如何删除空目录

要删除空目录,请使用rmdir命令而不是rm命令:

$ rmdir mydirectory
$ rmdir dirNameHere
$ rmdir docs

如何读取要从文本文件中删除的所有文件的列表

rm命令通常与xargs结合使用以提供要删除的文件列表。
创建一个名为file.txt的文件:

$ cat file.txt

删除列表:

file1
/tmp/file2.txt
~/data.txt

现在删除file.txt中列出的所有文件,执行:

$ xargs rm < file.txt

如何删除名为-foo.txt的文件或名为-bar的目录?

删除名为-foo.txt的文件:

rm -- -foo.txt

或者

rm -- ./-foo.txt

删除名为-bar的目录:

rm -r -f -- -bar

这两个破折号告诉rm命令选项的结尾,其余部分仅是文件或目录名称以破折号开头。

切勿以管理员或普通UNIX/Linux用户身份运行rm -rf /

警告!如果执行这些示例,将删除计算机上的所有文件。

$ rm -rf /
$ rm -rf *

rm -rf(或者rm -rf /,rm -rf*等)经常用于有关Unix灾难的笑话和轶事中。
如果该命令的rm -rf /变体由管理员运行,将导致删除计算机上每个可写挂载文件系统的内容。
不要尝试这些命令。

总结

这是GNU rm命令的所有重要选项

选项描述
-f忽略不存在的文件和参数,从不提示
-i在每次删除文件前提示
-I在删除三个以上文件之前或在递归删除时提示一次;比-i更具侵入性,同时仍然可以防止大多数错误--interactive [= WHEN]根据WHEN提示:从不,一次(-I)或始终(-i);如果没有WHEN,则总是提示
-一个文件系统
--no-preserve-root请勿特殊对待'/'
--preserve-root [= all]不删除'/'(默认);与" all"一起使用时,请在与其父设备
-r递归删除目录及其内容
-R与上述相同
-dr移动空目录
-v说明正在做什么