我想要一个命令行命令来在文件系统中搜索特定单词的所有 shell 脚本,所以我在工作中四处询问并得到以下解决方案:
grep word `find / -name \*.sh 2>/dev/null`
find / -name "*.sh" 2>/dev/null | xargs grep word
Run Code Online (Sandbox Code Playgroud)
但是,我对命令行不太熟悉,因此这两种解决方案对我来说似乎都不透明。我更喜欢做一些看起来像的事情:
ls -r *.sh | cat | grep -H word
Run Code Online (Sandbox Code Playgroud)
但是似乎您无法将文件名通过管道传输到 cat (至少我认为这就是问题所在)。
什么是最清晰的解决方案?其次,最有效的解决方案是什么?
编辑:我需要知道在哪个文件中找到了这个词,以便我可以修改脚本。
我最近问工作中的某人如何获取 ipcs -qa 的输出并使其以空格分隔,以便我可以解析它/将其存储在数据库中以进行监控。他给了我这个:
ipcs -qa | sed 's/ [ ]* / /g'
Run Code Online (Sandbox Code Playgroud)
它有效,但为什么呢?他是如何构造那个模式字符串的?我在哪里可以找到有关如何构建它们的文档?我检查了手册页,但它非常不透明。