这个“查找并删除”命令是否可以与星号甚至引号一起使用?

这个“查找并删除”命令是否可以与星号甚至引号一起使用?

我想运行类似这样的命令,删除超过 7 天的 AVI 文件:

找到“/home/user/videos 文件夹/*.avi”-mtime +7-exec rm-f

但正如您所看到的,视频文件夹有一个空格,所以我不得不将该路径放在引号中。但是,星号是否仍能完成查找所有 AVI 文件的任务,或者 Linux 现在会认为星号是实际的文件名吗?

我们假设我不想通过重命名文件夹来删除路径中的空格。

答案1

您需要稍微重新格式化您的命令才能使其正常工作。

尝试这个:

find "/home/user/videos folder" -name "*.avi" -mtime +7 -exec rm -f {} \;

或者,在 GNU find 中,不使用 -exec 来实现相同的效果:

find "/home/user/videos folder" -name "*.avi" -mtime +7 -delete

find 的第一个参数是要查找的文件夹 - 您不应该尝试将整个过滤器放在这里,而应该只放一个起点。然后使用-name告诉它要查找什么模式。您可以先不加-exec或尝试-delete,直到您满意为止,然后尝试它不会造成任何损害。

将参数括在引号中基本上可以防止 shell 对其进行干扰。如果使用-name *.avi,则看到的参数find可以是任何内容,因为 shell 会在调用 之前解析它(并将其替换为以 .avi 结尾的当前目录的内容)find。这通常是不好的,会导致意外的结果。find知道如何解析*自身。

相关内容