Shell脚本从命令行接受字符串并显示包含该字符串的文件列表

时间:2013-03-05 12:50:21

标签: bash shell unix filesystems

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

3 个答案:

答案 0 :(得分:2)

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

grep -rl "string" **/*

答案 1 :(得分: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”的每个fil。

答案 2 :(得分: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" *