找到:-printf:未知选项

时间:2012-03-20 16:59:55

标签: macos bash shell pipe

  

可能重复:
  Why does Mac's $find not have the option -printf?

不确定以下命令有什么问题,但任何人都可以发现错误:

find public_html -name '*.php'  -printf '%h \n' | sort -u > dirlist.txt

基本上,我正在寻找在我的public_html目录中找到所有具有* .php扩展名的目录的名称。然后打印出找到该文件的目录。输出通过管道进行排序,重复的条目被-u标志删除,结果存储在新文件dirlist.txt

但我执行的是:

find: -printf: unknown option 

不确定我在哪里弄错了

由于

2 个答案:

答案 0 :(得分:7)

您的find版本似乎没有-printf选项。

我会像这样做同样的事情:

find public_html -type f -name '*.php' | xargs -n1 dirname | sort -u > dirlist.txt

答案 1 :(得分:1)

是的,您的版本似乎没有-printf选项 - 我不知道Mac变种 - 可能还有其他人

你的另一种选择是将它管道化为sed并排序,如下所示:

find public_html -name '*.php'|sed 's#\(.*\)/.*#\1#' |sort -u