Pourquoi le point dans find des commands?

Généralement, on voit find commands qui ressemblent à ceci:

 $ find . -name foo.txt 

lorsque la search doit commencer à partir du directory en cours. Je trouve que sur mes machines (Ubuntu, Cygwin) j'obtiens les mêmes résultats sans le point.

Pourquoi est-il généralement inclus? Est-ce simplement une convention explicite, ou était-ce / est-il requirejs sur certains systèmes?

Certaines versions * de find nécessitent que vous fournissiez un argument de path qui est un directory à partir duquel commencer la search. Dot . représente simplement le directory actuel est généralement où vous voulez searchr.

Vous pouvez replace ceci par n'importe quel path que vous voulez être la base de la search. Dans certaines versions de find cela peut être laissé parce que le directory actuel est implicite si aucun argument de path n'est présent.

Vous pouvez exécuter man find dans votre shell pour plus de détails sur les arguments. Par exemple, le synopsis d'utilisation pour le mien indique que l'argument de path est optionnel (à l'intérieur du carré de crochet [] ):

  find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression] 

Si vous avez exécuté ma find sans arguments, tous les files et directorys partant du dossier actuel seraient renvoyés. Votre exemple indique simplement que la search devrait commencer . et inclut l'expression -name foo.txt comme l'un des filters de search.

* Notamment toutes les variantes BSD et tout ce qui colle ssortingctement au standard POSIX . La search GNU permet d'être facultatif.

La version AIX de find par exemple, nécessite le path et ne s'exécutera pas si on ne l'a pas fourni.

 # oslevel -s 5300-08-03-0831 # find -name bob Usage: find [-H | -L] Path-list [Expression-list] # oslevel -s 6100-03-01-0921 # find -name bob Usage: find [-H | -L] Path-list [Expression-list] 

Bien que certaines machines AIX puissent avoir une trouvaille GNU installée, qui peut faire face sans le path,

 # oslevel -s 6100-03-01-0921 # /opt/freeware/bin/find -version GNU find version 4.1