-1

如何编写一个 shell 脚本,该脚本将在一个目录(或子目录)下的文件列表中从命令行搜索给定的字符串,并显示包含该字符串的所有文件。

4

3 回答 3

2

试试这个,如果它给你你想要的:

grep -rl "string" **/*
于 2013-03-05T12:54:16.173 回答
0

基本示例:

#!/bin/sh

STRING=$1
DIR=$2

find $DIR -type f -exec grep -l $STRING {} \;

修复处理空白等留给学生作为练习。

我将脚本命名为“findfile.sh”并使用第一个参数 = 要查找的字符串,第二个 = 要查找的目录运行它。像这样:

[jenny@ryo-ohki:tmp]$ ./findstring.sh lyskom /home/jenny/src/elisp
/home/jenny/src/elisp/lyskom-elisp-client-all-0.48/README
/home/jenny/src/elisp/lyskom-elisp-client-all-0.48/lyskom-all-0.48.el
/home/jenny/src/elisp/lyskom-elisp-client-all-0.48/lyskom-all-0.48.elc
/home/jenny/src/elisp/lyskom-elisp-client-all-0.48/NEWS-0.48
/home/jenny/src/elisp/lyskom-all-0.48.elc
/home/jenny/src/elisp/lyskom-swedish-0.48.elc
/home/jenny/src/elisp/lyskom.elc

如您所见,它列出了目录 /home/jenny/src/elisp/ 及其子目录中包含单词“lyskom”的每个文件。

于 2013-03-05T12:54:49.390 回答
0

此 shell 脚本显示包含指定字符串的所有文件

#!/bin/bash
grep -l "$1" *

您可以将其保存为 find_util.sh 并执行

chmod a+x find_util.sh

./find_util.sh search

如果您希望它搜索子目录也可以将其更改为

#!/bin/bash
grep -lr "$1" *
于 2013-03-05T12:56:36.577 回答