如何删除以“-”开头的文件
1. 简介
在本教程中,我们将看到如何使用rm 和find 命令删除名称以“-”开头的文件。此外,我们将通过一些有用的示例来解释它们的相似之处。
2. 输入文件
我们将在所有示例中使用相同的输入文件,因此让我们创建一个名为blogdemo的文件夹并运行以下命令来创建一些文件:
$ touch -- -blogdemo.txt test.txt file_name.txt blogdemo.txt
因此,使用上述内容,我们创建了四个 txt 文件,其中*-blogdemo.txt*将是本教程中的目标。 而且,如果我们成功了,在本教程结束时,blogdemo 文件夹将只有三个文件,而不是四个:
$ ls blogdemo
blogdemo.txt file_name.txt test.txt
3. 使用rm
rm是一个非常流行的命令,用于在 Linux 操作系统中删除文件和目录。我们将从关注此命令开始,以实现本教程所描述的目标。
rm的一个特点 是双破折号“–”,**这意味着它后面没有命令行选项 。**虽然在大多数情况下是可选的,但在这种情况下它会派上用场。
想象一下,如果我们尝试 像删除任何其他文件一样删除*-blogdemo.txt* :
$ rm -blogdemo.txt
这里的问题是rm会认为“blogdemo.txt”是一个命令行选项,如*-r或-f*。
因此,让我们用双破折号运行 rm,这样它就知道它右侧的任何内容都不是命令行选项:
$ rm -- -blogdemo.txt
正如我们所观察到的,我们没有收到任何错误,因为我们在文件名之前使用了“ – ”,从而阻止了解释器接受更多的命令行选项。
4. 使用find
正如我们在上一节中看到的,如果我们忘记在-blogdemo.txt之前指定“* – ”,很容易出错。所以,让我们看看另一种可能对用户更友好的方法。
find是 Linux 操作系统中另一个比较著名的命令。它允许我们使用模式搜索文件并在之后执行操作。
如果我们运行以下命令,我们将得到与rm相同的结果。但正如我们在下面看到的,有两个步骤。
**首先,我们搜索所需的文件,*在本例中为 -blogdemo.txt。其次,我们使用-delete*选项执行删除操作:
$ find . -name '-blogdemo.txt' -delete