web-dev-qa-db-ja.com

findにはオプション-printfがありませんが、今は何ですか?

Macの検索にオプション-printfがない理由は見つかりませんでした。 Apple通常、他のコマンドと直交していないオプションを削除することを決定しますか?

Macで次のコマンドと同じ結果を得るにはどうすればよいですか coreutilsなしで?

find . -printf "%i \n"         // command in Ubuntu

Appleがオプションを削除するわけではありません。OSXのUNIXの基盤はほとんどFreeBSDから(回路的に)派生しており、その多くの部分は元のUNIXにまでさかのぼることができます... GNUユーティリティ。多くの機能が追加された再実装です。

この場合、 FreeBSDのfind(1) は_-printf_をサポートしていないので、OSXもサポートしていないと思います。代わりに、これはBSD風のシステムで機能するはずです。

_find . -print0 | xargs -0 stat -f '%i '
_

ただし、xargs(1)stat(1)の動作が異なるため、_xargs -0 -r stat -c '%i '_を記述するGNUユーザーランドシステムでは失敗します。

46
ephemient

さて、 ephemientbendin が原因を突き止めました。

必要に応じて、インストールを妨げるものは何もないことを付け加えておきますGNU find(from findutils )。使用する場合 fink =あります findutilsパッケージMacPorts あります あまりにも

18
dmckee

MAc OS Xfindバイナリは-printfコマンドをサポートしていません。インストールbrew install findutilsお使いのMacで。これは、-printfオプションを指定してgfindをインストールします。

15
abkrim

または、

find . -type f -exec stat -f "%z %N" {} \;

確かに、これはLinuxで同じことを行う方法ではありませんが、MacOSでは機能します

find . -type f -exec stat -c "%s %N" {} \;

linuxで同様の(同じではありませんが、近い)出力を生成します。

6
Sam

Ubuntuには GNUバージョンのfind が付属しています。これは、Mac OS Xのfind( [〜#〜] bsd [〜#〜] 系統)よりも機能的です。

実際、UbuntuのユーザーランドユーティリティのほとんどはGNUプロジェクトからのものです(したがって、「GNU/Linux」と呼ばれるLinuxベースのシステムを聞くことがあります)。

3
bendin