Terminal Grep-在递归搜索中显示当前目录/文件 问题

Terminal Grep-在递归搜索中显示当前目录/文件 问题,terminal,grep,file-search,Terminal,Grep,File Search,有时,当我递归地运行grep工具时,它会卡在一些大目录或一些大文件中,我希望看到目录或文件名,因为我可能意识到下次出于类似目的使用grep时,我不需要扫描特定的目录/文件,因此,使用相应的grep选项将其排除在外 有没有办法告诉grep在这种搜索中正在扫描的当前路径目录/文件 我的尝试 我试图在这里搜索,但找不到任何东西,因为通常使用关键字current directory是出于其他原因,因此存在术语冲突 我也尝试过这样的事情: man grep | grep -i current man gr

有时,当我递归地运行
grep
工具时,它会卡在一些大目录或一些大文件中,我希望看到目录或文件名,因为我可能意识到下次出于类似目的使用
grep
时,我不需要扫描特定的目录/文件,因此,使用相应的
grep
选项将其排除在外

有没有办法告诉grep在这种搜索中正在扫描的当前路径目录/文件

我的尝试 我试图在这里搜索,但找不到任何东西,因为通常使用关键字
current directory
是出于其他原因,因此存在术语冲突

我也尝试过这样的事情:

man grep | grep -i current
man grep | grep -i status
(和其他许多人)迄今为止没有成功

编辑:我刚刚找到了一个针对不同问题的有用答案,但我想如果我通过在
for
循环的某处添加
echo
命令来修改以下代码,它可能会起作用,尽管我刚刚意识到它需要bash 4,不幸的是我有bash 3

# Requires bash 4 and Gnu grep
shopt -s globstar
files=(**)
total=${#files[@]}
for ((i=0; i<total; i+=100)); do
  echo $i/$total >>/dev/stderr
  grep -d skip -e "$pattern" "${files[@]:i:100}" >>results.txt
done
#需要bash 4和Gnu grep
shopt-s环球之星
文件=(**)
总计=${#文件[@]}
对于((i=0;i>/dev/stderr)
grep-d skip-e“$pattern”“${files[@]:i:100}”>>results.txt
完成

find.-type f-exec-echo-grepping{};-exec-time-grep模式{};2>&1

  • find.-键入f
    以递归方式查找所有文件
  • -exec echo grepping{}
    调用每个文件
  • -exec time grep…{}
    报告每个grep花费的时间
  • 2>&1
    time
    的stderr放到stdout上

这并不报告每个目录的总时间。这样做要么需要更高级的查找,为
grep-d
查找叶目录,要么在每个路径上添加一些累积时间,我会使用
perl-p
…但这也不平凡。

find.-type f-exec echo grepping{}\-exec-time grep模式{}(2)和1 让你有时间来对所有文件进行格式化……不确定你想要什么。只是尝试了一下,我喜欢它!我想你可以考虑把它作为答案来添加…