我想遍历所有子目录,除了“node_modules”目录。
当前回答
一个简单的工作命令:
root/dspace# grep -r --exclude-dir={log,assetstore} "creativecommons.org"
上面我grep文本“creativecommons.org”在当前目录“dspace”和排除dirs{日志,资产存储}。
完成了。
其他回答
你可以试试grep -R搜索。| grep -v '^node_modules/.*'
解决方案1(结合find和grep)
此解决方案的目的不是处理grep性能,而是展示一个可移植的解决方案:应该也适用于busybox或大于2.5的GNU版本。
使用find排除foo和bar目录:
find /dir \( -name foo -prune \) -o \( -name bar -prune \) -o -name "*.sh" -print
然后结合find和grep的非递归使用,作为一个可移植的解决方案:
find /dir \( -name node_modules -prune \) -o -name "*.sh" -exec grep --color -Hn "your text to find" {} 2>/dev/null \;
解决方案2(使用grep的——exclude-dir选项):
你已经知道这个解了,但我加上它,因为它是最新的和有效的解。注意,这是一个不太可移植的解决方案,但更适合人类阅读。
grep -R --exclude-dir=node_modules 'some pattern' /path/to/search
要排除多个目录,使用——exclude-dir as:
——exclude-dir = {node_modules, dir1 dir2, dir3}
方案3(银)
如果你经常在代码中搜索,Ag(银色搜索器)是一个比grep更快的替代品,它是为搜索代码而定制的。例如,它会自动忽略.gitignore中列出的文件和目录,因此您不必一直向grep或find传递同样麻烦的排除选项。
一个简单的工作命令:
root/dspace# grep -r --exclude-dir={log,assetstore} "creativecommons.org"
上面我grep文本“creativecommons.org”在当前目录“dspace”和排除dirs{日志,资产存储}。
完成了。
步骤1:
vim ~ / . bash_profile
search() {
grep -InH -r --exclude-dir=*build* -e "$1" .
}
步骤2:
源~ / . bash_profile
用法:
搜索”< string_to_be_searched >”
非常有用,特别是对于那些处理Node.js时,我们希望避免在“node_modules”中搜索:
find ./ -not -path "*/node_modules/*" -name "*.js" | xargs grep keyword
推荐文章
- 使用sudo时未找到命令
- 当有命令行参数时,如何使用GDB分析程序的核心转储文件?
- 如何使用查找命令从列表中查找所有具有扩展名的文件?
- 如何强制从另一个SSH会话分离屏幕?
- 如何将文件指针(file * fp)转换为文件描述符(int fd)?
- Linux Bash中双&和分号有什么区别?
- 在SSH会话中查找客户端的IP地址
- C++ Linux的想法?
- 如何为Fedora安装g++ ?
- Linux删除大小为0的文件
- Spring引导应用程序作为服务
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- Windows和Linux上的c++编译:ifdef开关
- 在Bash中获取日期(比当前时间早一天)
- Linux: kill后台任务