我在greg中使用-l标志来获取文件列表是相当常见的。我喜欢有办法立即打开sublime中的所有找到的文件(我假设使用subl命令),而不是只输出一个列表。
我目前的工作流程:
grep --include=*.php -R -l "tribe_events_event_classes" .
哪个输出:
./plugins/events-calendar-pro/views/day/loop.php
./plugins/events-calendar-pro/views/map/loop.php
./plugins/events-calendar-pro/views/photo/loop.php
./plugins/events-calendar-pro/views/widgets/mini-calendar/list.php
./plugins/the-events-calendar/lib/tribe-template-factory.class.php
./plugins/the-events-calendar/public/template-tags/general.php
./plugins/the-events-calendar/views/list/loop.php
./plugins/the-events-calendar/views/month/single-event.php
./themes/roots/tribe-events/day/loop.php
然后我通常用以下方法逐个复制和粘贴文件:
subl ./plugins/events-calendar-pro/views/day/loop.php
subl ./plugins/events-calendar-pro/views/map/loop.php
etc...
我知道这里必须是一种更有效的方法。
答案 0 :(得分:4)
最简单的方法是:
subl `grep --include=*.php -R -l "tribe_events_event_classes" .`
(注意反引号)。
或者:
for file in `grep --include=*.php -R -l "tribe_events_event_classes" .`; do
subl $file
done
修改强> 的
由于反引号不能很好地嵌套,因此使用命令替换会更好:
subl $(grep --include=*.php -R -l "tribe_events_event_classes" .)
答案 1 :(得分:0)
bash脚本可以很好地解决这个问题。这是一个未经测试的概念(可能需要一些调整):
#!/bin/bash
files=()
while grep --include=*.php -R -l "tribe_events_event_classes" .; do
files += ("$REPLY")
done
for file in "${files[@]}"; do
subl $file
done