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