我尝试使用命令 删除以波浪号结尾的文件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
$
安全性稍差一些;理论上你可能会忘记是否设置了它。但如果你想在任何地方都设置它,并且你始终坚持这样做,那么它可能就是你想要的。