Si vous avez utilisé find
comme ça (sans le chemin d'accès complet) vous avez probablement utilisé le find.exe
livré avec Windows (C:\Windows\system32\find.exe
), qui s'apparente plus à grep
qu'à Unix find
. Vous obtenez ce comportement car Windows recherche tous les répertoires dans $env:PATH
pour les fichiers avec le nom donné (et l'une des extensions répertoriées dans $env:PATHEXT
si aucune extension n'a été spécifiée) et exécute la première correspondance. Puisque %windir%\system32
est généralement au début du chemin, les exécutables à partir de là ont la priorité.
Vous pouvez ajouter C:\msys64\msys64\usr\bin
au début du chemin (avant %windir%\system32
), bien que je ne le recommanderais pas. Une meilleure façon serait de définir une alias pour la commande:
New-Alias -Name 'find' -Value 'C:\msys64\msys64\usr\bin\find.exe'
alias ont priorité sur les fichiers. Vous pouvez placer la définition d'alias dans votre PowerShell profile afin qu'elle soit automatiquement chargée à chaque démarrage de PowerShell.
Ou vous pouvez simplement utiliser ls -r -fi '*.c'
(abréviation de Get-ChildItem -Recurse -Filter '*.c'
), ce qui correspond à la méthode PowerShell.