Linux 从find-name Shell脚本的结果中删除路径

Linux 从find-name Shell脚本的结果中删除路径,linux,bash,shell,Linux,Bash,Shell,我目前正在尝试编写一个脚本,该脚本在给定目录中查找txt文件中包含的一些单词。 目前代码非常简单: dir=$1 shift find $dir -name '*.cpp' -o -name '*.c' -o -name '*.h' | xargs grep -o -f "$@" | sort -u 我们可以通过以下方式运行它: sh search.sh directory filename 结果如下: /usr/src/linux-headers-3.19.0-25/scripts/sor

我目前正在尝试编写一个脚本,该脚本在给定目录中查找txt文件中包含的一些单词。 目前代码非常简单:

dir=$1
shift
find $dir -name '*.cpp' -o -name '*.c' -o -name '*.h' | xargs grep -o -f "$@" | sort -u
我们可以通过以下方式运行它:

sh search.sh directory filename
结果如下:

/usr/src/linux-headers-3.19.0-25/scripts/sortextable.h:void
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:continue
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:default
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:do
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:for
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:if
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:of
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:size
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:static
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:unsigned
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:void
/usr/src/linux-headers-3.19.0-25/scripts/unifdef.c:while
现在您可以看到,对于文件中找到的每个单词,即使前一个单词在同一个文件中,也会写入绝对路径

现在我想做的是写一些东西,比如: 路径包含以下单词:单词列表(如果未签名,则为静态)

如果可能的话,我正试图用管道在尽可能短的时间内做到这一点


提前感谢您的回答。

只要做
。|排序-u|awk'BEGIN{FS=“:”}{unique[$1]=(unique[$1]“”“$2)}END{for(i in unique)printf“%s包含%s\n”,i,unique[i]}
只需执行
。|排序-u|awk'BEGIN{FS=“:”}{unique[$1]=(unique[$1]“”“$2)}END{for(i in unique)printf“%s包含%s\n”、i、unique[i]}'