该代码不能运行的原因是在 -exec 后面的命令语句格式不正确。

在执行 -exec 命令时,'{}' 代表匹配到的文件名,但是在该代码中,'echo {} +' 这部分命令语句使用了单引号括起来,导致 '{' 无法被正确解析。

正确的命令语句应该是不带引号的,可以改为以下形式:

find . -name '*.log' -exec echo {} +

这样就可以正确地将匹配到的文件名传递给 echo 命令进行输出。

解释:

  • find . -name '*.log':查找当前目录下所有名为 '*.log' 的文件。
  • -exec:执行指定命令。
  • echo {} +:将匹配到的文件名传递给 echo 命令进行输出,其中 {} 代表匹配到的文件名,+ 表示将多个匹配到的文件名一次性传递给 echo 命令。

注意:

  • -exec 选项后的命令语句需要用空格分隔。
  • {} 代表匹配到的文件名,需要用空格与 -exec 选项后的命令语句分隔。
  • + 表示将多个匹配到的文件名一次性传递给 echo 命令,可以提高执行效率。

总结:

使用 find 命令的 -exec 选项时,需要格外注意命令语句格式,避免使用单引号将 {} 括起来,否则会导致文件名无法被正确解析。

Linux find 命令 -exec 使用详解:解析 '*.log' 文件名

原文地址: https://www.cveoy.top/t/topic/b50y 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录