我遇到了cygwin和qoutemarks的问题。
这有效:
grep FOO /path/to/files\ with\ spaces/*
grep FOO "/path/to/files with spaces/file1.txt"
但这不是:
grep FOO "/path/to/files with spaces/*"
grep FOO '/path/to/files with spaces/*'
错误消息是:grep:/ path / to / files with spaces / *:没有这样的文件或目录
星号以某种特殊的方式解释,或者我错过了一些完全明显的东西,或者是一些奇怪的事情。
答案 0 :(得分:3)
你在bash里面跑吗? man bash
了解完整详情。
基本上,通配符扩展由unix中的 shell 完成,而不是由命令本身完成。假设我的文件夹中有四个文件a
,b
,c
和d
。 set -x
告诉bash回应它实际上要在你输入的内容之后尝试运行的命令,所以我们将在这里使用它。
$ set -x
$ echo *
+ echo a b c d
a b c d
以bash打印的+
行开头:bash实际上将a b c d
传递给echo
。 echo
永远不会看到您输入的*
。
$ echo "*"
+ echo '*'
*
这次你告诉bash不要通过引用来*
进行文件名扩展。因此,echo
现在可以看到*
。
至于您的原始查询,请尝试
grep FOO '/path/to/files with spaces/'*