cygwinのfindコマンドが提供するパラメータ形式が正しくありません。

cygwinのfindコマンドが提供するパラメータ形式が正しくありません。

私のWindowsコンピュータでcygwinを使用しています。検索しようとしていますが、誤った形式の引数が提供されます。なぜそんなことですか?

$ ls
bootstrap.jar
catalina-tasks.xml
catalina.bat
catalina.sh
commons-daemon-native.tar.gz
commons-daemon.jar
cpappend.bat
digest.bat
digest.sh
setclasspath.bat
setclasspath.sh
shutdown.bat
shutdown.sh
startup.bat
startup.sh
tomcat-juli.jar
tomcat-native.tar.gz
tool-wrapper.bat
tool-wrapper.sh
version.bat
version.sh

$ find . -name "version.sh"
FIND: Parameter format not correct
  • Cygwinをインストールするときに何かをインストールする必要がありますか、それとも何か間違っていますか?

答え1

あなたのPATH状況は深刻です。 Cygwinディレクトリの前にWindowsシステムディレクトリがあるか、Cygwinディレクトリがまったくない可能性があります。このメッセージはWindowsコマンドからのものですfindFINDヒントとして名前を大文字で報告します)。

Cygwinシェルを起動するときは、通常これを設定する必要がありますPATH。ログインシェルを起動することをお勧めします(私の記憶が正しい場合は、これがデフォルトのCygwinシステムメニュー項目の機能です)。 Cygwinには、PATH非Cygwinディレクトリの前に/usr/local/bin(少なくとも)含める必要があります。/usr/bin/bin

答え2

インストールを見つけましたか? 「見つかったもの」は何を返しますか? Windowsにはコマンドライン検索が組み込まれており、Cygwinの独自の検索がmiaの場合は最終的にそれを使用します。

答え3

findWindowsバージョンのコマンドはcygwinバージョンよりも前に表示されるため、コマンドが呼び出されるという点でGillesの答えは正しいです。

しかし、Cygwinを前に置くことは、findWindowsコマンドを使用するすべてのバッチファイルが実際にcygwinfindコマンドを呼び出すことを意味し、おそらく望むものではありません。

私の考えでは、2つが最も共生する方法は、次のことです。

  1. cygwinfindコマンドを見つけて名前を変更またはコピーします lfind.exe(またはWindowsパスにない他の名前)。
  2. ファイルに~/.bashrc次の行を追加します。alias find=lfind

これにより、findcygwin端末で実行するときにcygwinバージョンを使用しますが、バッチファイルはWindowsバージョンを使用します。

注:まだPATHにcygwin binディレクトリが必要ですが、Windowsシステムディレクトリの背面に配置できるようになりました。

答え4

以下は、デフォルトのwin32ポートであるGNU-utilsです。。 grep、sed、awk、find、less、cat、tacなどを含むシェル(sh.exe)を実行して提供するためにcygwinは必要ありません。

Windowsパスの問題はまだ存在しますが、findの名前をgfind(gnu-find)に変更したり、アクセスしやすくしたり、searchPATHにcoreutilsディレクトリを追加したりできます。

関連情報