我最近从 Windows 开发环境切换到 Apple 开发环境。此举是一个具有挑战性的过程,但我正在努力在终端中选择基于 UNIX 的命令来补充我每天在 Windows 命令提示符下使用的命令。任何帮助将不胜感激,对提供的命令中发生的事情的基本解释对我来说是一个巨大的好处,因为我试图掌握 UNIX 命令,但是阅读man
ual 就像阅读外语一样我大部分时间。
这是我的问题:是否有一个单行命令,最好足够短以便记忆,我可以执行该命令来模仿或产生与以下 Windows CMD 命令非常相似的输出:
findstr /s /c:"this piece of text" *.code
我经常在 Windows 上使用此命令来生成一个结果集,该结果集向我显示引号之间的文本驻留在与任何子目录中的 *.code 模式匹配的任何文件中的位置。这可用于检查从服务器拉回的大量文件的版本号,以查找在大型项目中声明变量的位置。输出以这种形式出现:
file1.code: other text this piece of text other text
file2.code: other text this piece of text other text
file3.code: other text this piece of text other text
file4.code: other text this piece of text other text
file5.code: other text this piece of text other text
其他文本是在给定文件中与我的搜索字符串位于同一行的任何其他文本。我在这里搜索了问题,发现有几个人使用find . -name *.code
在子目录中构建文件列表。然后,他们使用命令中的-exec
标志find
与序列配对grep
来搜索文本。我以上述几种方式进行了尝试,但都失败了,我认为是由于转义序列或丢失的字符。如果有一种方法可以在它刚刚搜索的引号之间给命令一个字符串,那就太棒了。
我尝试了以下但没有得到任何结果......也许是语法错误?
find . -exec grep -H .getItemToChange().getItemAttributes()
更新 下面提供了正确的代码,John 给出了很好的解释。如果这有助于你喜欢它帮助我给他的答案一个upvote!
我希望在一个大型项目中找到带有此函数调用的 .java 文件。它没有给我任何结果,也没有办法只过滤到 *.java。
有谁可以帮我离开这里吗?非常感谢您对命令的解释。