我在当前目录下有一些名为“mm-yyyy”(例如01-2014)的目录。我想要在名称中包含“2013”的目录中查找文件。如何排除名称中不包含“2013”的目录?我尝试了以下方法,但不起作用:
grep hill * -R --exclude-dir=*201[0-2]
它仍会遍历所有子目录以执行grep命令。
grep -r --exclude-dir={dir1,dir2,dir3} string_to_search_for *
你可以使用
grep -R hill *-2013
--exclude-dir
也应该可以起作用:
grep -R hill --exclude-dir=".*201[0-2]" .
如果没有引号,星号将被Bash扩展。 正则表达式的通配符是.*
. - matches any character
* - match any number of repetitions of the previous character, including none
--exclude-dir
是在2.5.3中引入的。(在旧的CentOS 5.11上不存在,grep版本为2.5.1)。 - Paolo
grep -r --exclude-dir=dir1 --exclude-dir=dir2 --exclude-dir=dir3 string_to_search_for *
。欲了解更多Bash技巧,可参考(http://wiki.bash-hackers.org/syntax/expansion/brace)。 - Amin Mozafari