![*nix 和 windows (ming32) 系统上 find(参数不正确)的不同行为](https://linux22.com/image/1470538/*nix%20%E5%92%8C%20windows%20(ming32)%20%E7%B3%BB%E7%BB%9F%E4%B8%8A%20find%EF%BC%88%E5%8F%82%E6%95%B0%E4%B8%8D%E6%AD%A3%E7%A1%AE%EF%BC%89%E7%9A%84%E4%B8%8D%E5%90%8C%E8%A1%8C%E4%B8%BA.png)
从 Makefile 调用的这个命令在各种 *nix 系统上都可以正常运行,但在 Windows + Mingw32 bash/makefile 上会失败:
for a in `find libr | grep -e dll$$`; do cp $$a ${WINDIST} ; done
这是 mingw32 控制台中显示的错误:
for a in `find libr | grep -e dll$`; do cp $a w32dist ; done
FIND: Parameter format not correct
大多数 *nix bash 和 make 和 mingw32 的有什么区别?
答案1
查找:参数格式不正确
C:\Windows\System32\find.exe
如果你调用错误,就会出现上述错误:
F:\test>where find
C:\Windows\System32\find.exe
F:\test>find blah blah
FIND: Parameter format not correct
F:\test>
您的Windows
find
( )C:\Windows\System32\find.exe
PATH
前mingw32find
。如果您
which find
在 mingw32 控制台中运行,它将显示此信息。您需要修复您的 mingw32,
PATH
以便首先找到 mingw32 实用程序。
答案2
查找:参数格式不正确
解释:
这寻找命令是用于在文件系统中搜索文件的强大命令。它可在赛格威和视窗,但两个版本之间存在一些差异。
在 Cygwin 上find 命令使用文件系统数据结构来搜索文件。这样,即使文件位于文件系统深处,它也能快速高效地找到它们。
在 Windows 上中,find 命令使用文件系统对象 (FSObj) 来搜索文件。FSObj 是一个文件系统 API,允许开发人员创建与 Windows 文件系统配合使用的应用程序。
默认值是 Windows,因此当您尝试在操作系统为 Windows 时在命令行上运行它时,它会尝试运行该命令并遇到与您描述的期望接收的参数不匹配的参数:
`F:\test>find blah blah
FIND: Parameter format not correct`
要更改此设置,您需要更改操作系统默认值。
您可以通过命令行执行如下操作:
命令:
1检查 find.exe 文件的路径,您将获得 Windows 和 Cygwin 的路径,其中 Windows 是第一个:
C:\Users\User>where find
C:\Windows\System32\find.exe
C:\cygwin64\bin\find.exe
2现在您将看到默认操作系统是什么:
`which find
C:\Windows\System32\find.exe`
3在 Windows 之前使用此命令来设置从 Cygwin 查找:
set PATH=C:\cygwin64\bin;%PATH%
4.现在您将看到一长串路径,您的路径应该是第一个
C:\Users\User\L>echo %PATH%
5现在,您可以通过一个简单的 find 命令进行一个简短的测试来检查它是否有效,例如:
`find . -type f -name *.txt`
如果操作返回所有以 txt 结尾的文件,或者不返回任何内容(因为当前位置没有任何以此结尾的文件),则表示您成功了!如果再次遇到错误,请检查步骤。