为什么 grep 在搜索多个目录时会丢失缺失的匹配项?

为什么 grep 在搜索多个目录时会丢失缺失的匹配项?

尝试 grep 几个子目录中的文件,grep 不返回任何内容。

~/box/raw $ grep ":2259\"" f*/hh*.adt
~/box/raw $ 

但是当我进入其中一个子目录时,grep 找到了匹配项。

~/box/raw/f040 $ grep ":2259\"" hh*.adt
hh_sr2014_v8.adt:"2/23/2015 2:33:49 PM","Leave Field:Introduction.BQ1a","Cause:Next Field","Status:Normal","Value:2259"

这有效(即找到匹配项):

~/box/raw $ grep ":2259\"" f040/hh*.adt

但这些却没有:

~/box/raw $ grep ":2259\"" f???/hh*.adt
~/box/raw $ grep ":2259\"" f???/hh_sr2014_v8.adt
~/box/raw $ grep ":2259\"" f*/hh_sr2014_v8.adt

目录名称中似乎有一些关于通配符扩展的规则,我不明白。它们是什么?

这是在 Windows 7 机器上的 Cygwin 上。uname -r给我“1.7.33-2(0.280/5/3)”。

答案1

将以下内容添加到您的~/.bashrc文件中:

shopt -s nocaseglob

然后注销并重新登录 Cygwin(不是 Windows),现在 bash shell 在处理文件名时将不再区分大小写。更多信息这里

相关内容