我還沒有找到一個原因,Mac的發現沒有選擇-printf。 蘋果通常會決定採取哪些選項與其他命令不正交?找不到選項-printf,現在怎麼辦?
如何在沒有coreutils的Mac中獲得與以下命令相同的結果?
find . -printf "%i \n" // command in Ubuntu
我還沒有找到一個原因,Mac的發現沒有選擇-printf。 蘋果通常會決定採取哪些選項與其他命令不正交?找不到選項-printf,現在怎麼辦?
如何在沒有coreutils的Mac中獲得與以下命令相同的結果?
find . -printf "%i \n" // command in Ubuntu
這並不是說蘋果刪除選項,那就是OS X的UNIX基礎大多是派生(迂迴)從FreeBSD中,許多地方的這些都可以追溯到原始的UNIX ......相對於GNU工具,這些重新實現添加了許多功能。
在這種情況下,FreeBSD's find(1)
不支持-printf
,所以我不希望OS X的。相反,這應該是BSD十歲上下的系統上運行:
find . -print0 | xargs -0 stat -f '%i '
它會失效了一個GNU用戶態的系統上,不過,在那裏你會寫xargs -0 -r stat -c '%i '
因爲xargs(1)
和stat(1)
行爲是不同的。
Ubuntu附帶GNU version of find,它比Mac OS X的查找更具功能,它是BSD沿襲。
事實上,大多數的Ubuntu的用戶空間實用程序從GNU項目。 (因此你有時會聽到基於Linux的系統被稱爲「GNU/Linux」)。
或者,你可以只
find . -type f -exec stat -f "%z %N" {} \;
當然,這是不是你會怎麼做在Linux同樣的事情,但適用於MacOS的
find . -type f -exec stat -c "%s %N" {} \;
產生類似的(不相同,但關閉)在linux上輸出。
Mac OS X中找到二進制不支持-printf命令。在您的Mac上安裝brew install findutils
。這會使用-printf選項安裝gfind。
出於某種原因,這種打印數量,而不是在OS X 10.8.4中iTerm2字符串。相反,來自dmckee建議的MacPorts的indutils包中的`gfind`可以正常工作。 – 2013-10-13 18:46:17
這是因爲%i打印了inode。 – 2017-03-07 16:15:02