如何使用Find的Cygwin版本而不是Windows版本

时间:2019-06-07 14:48:12

标签: windows cmd cygwin

我已经在计算机中安装了Cygwin,并将其bin文件夹设置在PATH中。

我可以在Windows命令提示符下使用所有Cygwin命令。

但是,我遇到的一个问题是两个Cygwin Windows都具有命令“ find”。每当我使用find时,就会获得Windows版本。

无论如何,我是否可以强制使用find的Cygwin版本而不是Windows版本?

2 个答案:

答案 0 :(得分:0)

确保cygwin可执行文件文件夹/usr/bin在cmd和bash shell的PATH变量中的cmd可执行文件文件夹c:\Windows\system32之前,以确保您运行cygwin的find而不是Windows的find命令

在cygwin shell中使用which -a find列出通过bash shell的PATH变量找到的可执行文件。

在cmd shell中使用where $PATH:find列出通过cmd shell的PATH变量找到的可执行文件。

答案 1 :(得分:-1)

这是因为find是cmd内置的shell,因此它甚至都不会尝试通过可执行文件搜索路径。

通常,Windows无法理解Cygwin符号链接,但正如https://cygwin.com/cygwin-ug-net/using.html#pathnames-symlinks所解释的,在现代中它可能是 Windows版本可在NTFS文件系统上创建本机Windows符号链接,只要链接不跨文件系统即可。

我会考虑只将其包装在例如您的Cygwin /usr/local/bin中的批处理脚本中,其名称类似于cygfind.bat(或您要调用的名称),该脚本明确调用Cygwin的{{ 1}}由find

包装器方法的优势在于,如果升级Cygwin并更新C:\path\to\find.exe,则包装它的批处理脚本仍将透明地工作。

我从来没有亲自尝试过,但是根据this answer,您还可以使用特殊的find变量来覆盖cmd内置函数。