3
find . -iname '*.rar' -execdir ls {} +

这在 OSX Lion 下不起作用,屈服ls: blabla.rar: No such file or directory等。

此外,以上将在 Linux 下工作。但是,它会在找到结果时调用 ls 多次。用简单的cat $#脚本测试。

所以我看到2个问题-execdir

  • 在 Linux 下,它不会像使用手册中所述的那样组合搜索结果{} +
  • 在 OSX 下,它不会按照手册中的说明更改目录,再次使用{} +

想确认这是错误的,而不是我的误解。

4

2 回答 2

3

我不知道 Mountain Lion,但它是 GNU findutils 中的一个已知错误,显然已在 4.5 分支中修复(检查您的find --version. 见https://savannah.gnu.org/bugs/?19593

还有这个错误:https ://savannah.gnu.org/bugs/? 29949 in find 4.5.9 版本,与山狮症状相匹配。也许您应该检查两个版本号。

于 2012-10-25T17:51:55.263 回答
0

在 Linux 上,它ls是对每个文件执行一次还是对每个子目录执行一次?从man find(GNU findutils 版本 4.4.2):

-exec操作一样,“+”形式的-execdir 将构建一个命令行来处理多个匹配的文件,但任何给定的命令调用都只会列出存在于同一子目录中的文件。

于 2012-10-25T17:36:51.753 回答