我有一个包含200个文件的文件夹。我们可以说这些文件名为“abc0”到“abc199”。其中五个文件包含字符串“ez123”,但我不知道哪些文件。我当前尝试查找包含该字符串的文件的文件名是:
#!/bin/sh
while read FILES
do
cat $FILES | egrep "ez123"
done
我有一个文件,其中包含目录中所有文件的文件名。然后我执行:
./script < filenames
这验证了包含该字符串的文件存在但我仍然没有文件名。有没有关于实现这个目标的最佳方法的想法?
由于
答案 0 :(得分:3)
你可以尝试
grep -l "ez123" abc*
答案 1 :(得分:1)
find /directory -maxdepth 1 -type f -exec fgrep -l 'ez123' \{\} \;
(-maxdepth 1
仅在您只想搜索目录而不是递归树(如果有)时才是必需的。)
fgrep
比grep快一点。 -l
仅列出匹配的文件名。
答案 2 :(得分:0)
尝试
find -type f -exec grep -qs "ez123" {} \; -print
这将使用find
查找当前目录(和子目录)中的所有真实文件,对它们执行grep
({}将替换为文件名,-qs表示它是静默的,只需设置一个退出代码),-print将打印出grep找到匹配行的文件的名称。
答案 3 :(得分:0)
怎么样:
xargs egrep -l ez123
从stdin读取文件名并打印出带匹配的文件名。