Linux 删除临时文件

Linux 删除临时文件

我尝试使用命令 删除以波浪号结尾的文件rm *.*~,但该命令无法删除以 开头.并以 结尾的文件~,例如.somefile~。我也尝试过rm *~,但该命令对以 开头的文件也不起作用.。有人能解释一下这是为什么吗?

我想删除所有以 结尾的文件~,无论它们是否以 a 开头.(我尝试不使用 find/exec 来执行此操作)。这可能吗?

答案1

以 开头的文件.默认是隐藏的,不会显示在正常的 中ls。由于您可能没有看到它们,因此除非您手动包含它们,否则 shell 通常不会匹配这些文件。您可以按如下方式执行此操作:

rm *~ .*~

答案2

虽然上述答案可能更安全(因为副作用较少),但为了完整起见......

bash shell(大多数人在 Linux 上运行的程序)有一个标志,用于指示是否在 glob 中包含点文件。您可以使用 来设置它shopt -s dotglob。下面的顺序是在设置标志之前,然后在设置之后。请注意,一旦设置了 dotglob,rm 就会将其删除。

$ touch .somefile~
$ rm *~
rm: cannot remove `*~': No such file or directory
$ ls -A
.somefile~
$ shopt -s dotglob
$ rm *~
$ ls -A
$

安全性稍差一些;理论上你可能会忘记是否设置了它。但如果你想在任何地方都设置它,并且你始终坚持这样做,那么它可能就是你想要的。

相关内容