2009-04-15 19 views

答えて

36

それはGNUユーティリティとは対照的に、OS XのUNIXの基盤はほとんど...、FreeBSDのから(circuitously)は、元のUNIXにさかのぼることができ、多くの部品を導出していることだが、Appleはオプションを削除することはありませんこれは多くの機能が追加された再実装です。

この場合、FreeBSD's find(1)-printfをサポートしていませんので、OS Xもどちらでもないと思います。その代わり、これはBSDっぽいシステム上で動作するはずです:

find . -print0 | xargs -0 stat -f '%i ' 

それはxargs(1)stat(1)動作が異なっているので、あなたがxargs -0 -r stat -c '%i 'を書くと思いますけれども、GNUユーザランドシステム、上で失敗します。

+2

何らかの理由で、これはOS X 10.8.4のiTerm2の文字列の代わりに数字を表示します。代わりに、dmckeeによって提案されたMacPortsの 'indutils'パッケージからの' gfind'がうまく動作します。 –

+0

これは、%iがiノードを出力するからです。 –

3

Ubuntuには、が付属しています。これは、Mac OS Xのfindよりも機能が豊富で、BSD系のものです。

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

13

まあ、ephemientbendinが原因です。

私はGNU find(あなたがそれを必要とすればfindutilsから)をインストールするのを止めるものは何もないと付け加えたいと思います。 finkを使用する場合、findutils packageがあります。 MacPortstooです。

+8

あなたは[Homebrew](http://brew.sh/)でもインストールできます: 'brew install findutils' ' find'ではなく 'gfind'を使用してください。 – MacDada

+0

それをインストールしましたが、まだエラーが表示されますか? – 3zzy

+0

@ 3zzyあなたのパスにGNUバージョンが含まれていますか?それはシステムのバージョンの前後に来ますか? 'gfind'を使うと、GNU版を強制することがあります。 – dmckee

3

また、あなたはできるだけ

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

確かに、これはあなたがLinux上で同じことをするだろうかではなく、MacOSのために働く

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

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

6

MAc OS X findバイナリは-printfコマンドをサポートしていません。あなたのMacにbrew install findutilsをインストールしてください。これは、-printfオプションでgfindをインストールします。

関連する問題