find manque l’option -printf, maintenant quoi?

Je n’ai pas trouvé de raison pour laquelle la recherche de Mac ne dispose pas de l’option –printf. Apple décide normalement de sortir des options qui ne sont pas orthogonales aux autres commandes?

Comment pouvez-vous atteindre le même résultat que la commande suivante dans Mac sans coreutils?

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

Ce n’est pas que Apple supprime les options, c’est que les fondements UNIX d’OS X sont pour la plupart dérivés (en circuit) de FreeBSD, dont de nombreuses parties remontent à UNIX original, par opposition aux utilitaires GNU, qui sont nombreuses fonctionnalités ajoutées.

Dans ce cas, le find(1) FreeBSD ne supporte pas -printf , donc je ne m’attendrais pas à OS X non plus. Au lieu de cela, cela devrait fonctionner sur un système BSD-ish:

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

Cela échouera sur un système GNU-userland, où vous écrirez xargs -0 -r stat -c '%i ' car le comportement de xargs(1) et de stat(1) est différent.

Eh bien, éphémère et bendin en ont cloué la cause.

J’appendais que rien ne vous empêche d’installer GNU find (à partir de findutils ) si vous en avez besoin. Si vous utilisez fink, il existe un paquet findutils . MacPorts l’ a aussi .

MAc OS X find binary ne supporte pas la commande -printf. Installez brew install findutils sur votre mac. Ce install gfind avec l’option -printf.

Alternativement, vous pourriez juste

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

Certes, ce n’est pas comme ça que vous feriez la même chose sur Linux, mais ça marche pour MacOS

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

produit une sortie similaire (pas la même, mais proche) sur Linux.

Ubuntu est livré avec la version GNU de find , qui est plus caractéristique que celle de Mac OS X, qui est du type BSD .

En fait, la plupart des utilitaires utilisateurs d’Ubuntu proviennent du projet GNU. (Ainsi, vous entendrez parfois des systèmes basés sur Linux appelés “GNU / Linux”.)