Linux 附带了多种工具,可以帮助我们删除文件。我们总是需要根据一组要求删除许多文件和文件夹。为了快速完成我们的任务,了解一些基本命令及其变化是有益的。
- 使用以下命令时要小心,尤其是那些使用正则表达式或 find 命令搜索模式的命令。不正确的表达式或模式将导致重要数据/系统文件和非预期文件的删除。
- 通常有关键数据和设备文件的当前副本。
- 运行这些命令时要小心,特别是当您使用 Sudo 或作为超级用户 (root) 时。
1. 使用“unlink”删除文件:
不是那么受欢迎。我们可以使用unlink命令永久删除单个文件。
$ unlink {file-name}
2. 删除单个文件:
rm命令有助于同时删除一个或多个文件,是一种更广泛使用的删除文件命令。
$ rm {file-name}
如果文件被写保护, rm会要求你验证它的删除;否则,它会在没有提示的情况下将其删除。使用“ -i”标志强制rm在删除文件之前提示确认:
$ rm -i {file-name}
rm 命令删除文件而不显示任何消息。使用rm命令与-v标志看rm命令正在做什么。
$ rm -v {file-name}
使用-f标志删除写保护的文件而不要求澄清。
$ rm -f {file-name}
3.可以删除多个文件:
绕过多个文件名作为rm 的参数,您可以删除多个文件。
$ rm {file-name-1} {file-name-2} {file-name-3} ... {file-name-N}
rm也支持正则表达式。如果要删除名称为file-name-* 的所有文件,请键入:
$ rm file-name*.ext
正则表达式也可用于定义不同的目录。我们可以使用类似的方法删除三个适合file-name-1 、 file-name-2和file-name-3 的文件。
$ rm file-name-[123]
4. 删除存档:
带有-d标志的rm命令可用于删除空目录。
$ rm -d {dir-name}
支持的文件删除选项也可以与删除带有-d标志的目录结合使用。
$ rm -idv {dir-name}
使用 -r 标志删除非空目录。
$ rm -r {dir-name}
如果在删除目录及其内容之前不希望出现提示,请使用-rf标志。这将删除目录中的所有内容,包括目录本身,无需任何确认。尤其是作为 root 使用时要小心。
$ rm -rf {dir-name}
5. 定位和删除文件:
对于更复杂的规范,我们可以使用具有多种选择的 locate 命令。删除 {dir-to-search}指定的路径中遵循模式{pattern} 的所有文件。
$ find {dir-to-search} -type f -name {pattern} -exec rm -f {} \;
例子:
$ find luv -type f -name "*.txt" -exec rm -f {} \;
我们可以稍微更改上面的命令以删除符合序列{pattern } 的所有内容,包括{dir-to-search} 中的目录:
$ find {dir-to-search} -name {pattern} -exec rm -rf {} \;
在内部,find 命令的现代实现支持删除功能。 -delete 标志用于覆盖 rm 指令,而–depth 标志告诉 find 在目录本身之前处理目录的内容:
$ find {dir-to-search} -type f -name {file-name-pattern} -depth -delete
6.应该找到并删除空文件:
您可以使用以下命令删除给定路径dir-to-search中的所有空目录:
$ find {dir-to-search} -type d -empty -delete
相反,使用以下命令删除给定路径dir-to-search中的所有空文件:
$ find {dir-to-search} -type f -empty -delete
7.权限用于定位和删除文件:
我们现在可以根据特殊权限删除文件,例如:
$ find {dir-to-search} -name {pattern} -perm {NNN} -delete
考虑以下场景:
$ find /var/tmp -name "temp*" -perm 755 -delete
Linux 中提供了简单的(unlink) 、 (rm)和(rmdir)命令,并且可以使用正则表达式快速扩展它们。对于更专业的需求,您应该使用各种技术,例如(find)来实现您的目标。除了本文中的示例之外,您还可以通过将 find 与任何可用标志一起使用来配置您的任务。
通常运行不带rm或-delete标志的 find 命令并检查输出以确定哪些文件或文件夹可能会受到程序执行的影响。备份设置和程序不仅在无意删除的情况下有益,而且在硬件错误和网络攻击的情况下也是有益的。