【问题标题】:find: -printf: unknown option [duplicate]查找:-printf:未知选项 [重复]
【发布时间】:2012-04-05 04:39:02
【问题描述】:

可能重复:
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 

不知道哪里弄错了

谢谢

【问题讨论】:

  • 错误是因为find 没有 printf 选项 - 正是错误消息所说的。检查您系统上的man printf 以了解该怎么做。
  • 嗨 Adam,这是 OS X Lion,使用 mac 终端
  • 你可以安装 GNU findutils

标签: macos bash shell pipe


【解决方案1】:

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

我会做同样的任务:

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

【讨论】:

  • 我猜这是因为我在 OS X 终端上遵循 linux 手册!
  • 谢谢大家! stackoverflow 社区很棒,希望我也能跟上进度,开始贡献!
  • @user1020069:我建议更新你的名字。
  • @bukzor 同样,您知道如何在没有 -printf 选项(我没有)的情况下执行以下操作吗? --> 找到 . -printf "%p (%s, %Tb %Td %TY %TH:%TM)\n" 基本上我也希望列出大小和日期/时间。
【解决方案2】:

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

您的替代方法是将其通过管道传输到 sed 并排序,如下所示:

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

【讨论】:

    猜你喜欢
    • 2011-03-30
    • 2016-03-19
    • 2013-04-28
    • 1970-01-01
    • 2021-05-28
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多