如何编写一个 shell 脚本,该脚本将在一个目录(或子目录)下的文件列表中从命令行搜索给定的字符串,并显示包含该字符串的所有文件。
问问题
1386 次
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 回答