【发布时间】:2016-06-01 20:38:29
【问题描述】:
我在当前目录中有一些名称如“mm-yyyy”(01-2014)的目录。我想 grep 名称为“2013”的目录中的文件。如何排除名称没有“2013”的目录?我尝试了以下方法,但没有成功:
grep hill * -R --exclude-dir=*201[0-2]
它仍然通过所有子目录来执行 grep。
【问题讨论】:
我在当前目录中有一些名称如“mm-yyyy”(01-2014)的目录。我想 grep 名称为“2013”的目录中的文件。如何排除名称没有“2013”的目录?我尝试了以下方法,但没有成功:
grep hill * -R --exclude-dir=*201[0-2]
它仍然通过所有子目录来执行 grep。
【问题讨论】:
grep -r --exclude-dir={dir1,dir2,dir3} string_to_search_for *
【讨论】:
grep -r --exclude-dir=dir1 --exclude-dir=dir2 --exclude-dir=dir3 string_to_search_for *。查看 (wiki.bash-hackers.org/syntax/expansion/brace) 了解更多 Bash 魔法。
你可以使用
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的解决方案