新しもの好きプログラマの耳より情報ブログ

仕事でもあるプログラミングについて役に立ちそうな情報を発信していこうというブログです。役に立たなそうな情報はfacebookで。

Azure Pipelines等でfindコマンドが「No such file or directory」になる場合の対処方法

次のようにパイプでfindコマンドに文字列を渡した場合に、なぜか「No such file or directory」が返ってくる場合がある。

dotnet tool list -g | find "dotnet-script" >NUL

find: 'dotnet-script': No such file or directory

Azure Pipelinesのscript TaskをWindowsエージェントで実行した場合にこの問題が起きた。

パスが通る場所にbashのfind.exeがあるビルドエージェントを使用すると、この問題が発生する場合がある。パスが通っているとそちらのfindが呼ばれてしまうため、この問題が発生するようだ。

例えば、git for Windowsコマンドプロンプトから呼べるようにパスを通してインストールすると発生する。

この場合、「%WinDir%\System32\find」のようにWindowsのfindコマンドをフルパス指定することで、この問題を回避できる。

dotnet tool list -g | %WinDir%\System32\find "dotnet-script" >NUL