我们喜欢使用 cygwin 在 Windows 环境中搜索许多目录。我们尝试了 find . -name *.txt -print
但它抱怨 -print 谓词。那么正确的命令是什么?
我们只希望匹配的文件打印到控制台。
谢谢大家
答案1
它抱怨是因为您没有引用,*.txt
所以 shell 正在扩展模式而不是将其传递给find
。换句话说,假设您位于包含以下文件的目录中:
foo.txt bar.txt baz.txt
当您说find . -name *txt -print
通配符(*
)被shell(可能是bash)扩展时,传递给f的find
实际是:
find . -name foo.txt bar.txt baz.txt -print
争论和find
抱怨太多了。要得到你想要的东西,你需要引用你正在搜索的模式(你也不需要-print
你正在做的事情):
find . -name "*txt"
答案2
也无法find
在 Cygwin 上工作。File not found
一直出现错误。问题是 Windows 有自己的版本:
$ which find
/cygdrive/c/Windows/system32/find
我通过在任何地方输入 /usr/bin/find 来解决这个问题,但我想你可以改变路径优先级或重命名 Windows 的 find.exe