我首先需要在库中查找没有字符串的文件。然后,在生成的文件名中,我需要搜索带有字符串的文件。
首先,我在命令行上尝试了grep -L但它不起作用。 我是unix的新手,任何人都可以帮助建立这个逻辑。
谢谢!
答案 0 :(得分:0)
以下是一些要搜索的想法和cmds。
(我的问题描述对我来说不清楚,所以我给你看起来像你要求的最可能的解决方案)..
给出测试文件
echo "a
b
c
d" > /tmp/testFile.txt
你可以搜索一个"字"带有
的文件中的(或字符)grep d /tmp/testFile.txt ; echo $?
将返回
d
0
0
表示成功执行的cmd,而1
(或其他非零值)表示发生了错误。
现在将-l
选项添加到grep
,其中显示" list"满足所提供选项要求的文件:
grep -l e /tmp/testFile.txt ; echo $?
仅返回
1
由于在文件中找不到e
,因此未打印该名称。
相比之下,搜索文件中存在的字符串看起来像
grep -l d /tmp/testFile.txt ; echo $?
/tmp/testFile.txt
0
表示找到了搜索目标。
现在你需要一种方法来获取要在grep上搜索的所有文件的列表,
cd /path/to/starting/dir/to/search # you know what to put here, right?
find . -name '*.txt'
将生成当前目录和当前目录的所有子目录中所有.txt
个文件的列表。
最后,您可以将.txt
文件列表提供给一个循环,该循环可以检查您的目标字符串是否存在
srchStr="e"
cd /path/to/starting/dir/to/search # you know what to put here, right?
find . -name '*.txt' \
| while read file ; do
if ! grep -q "$srchStr" "$file" ; then
echo "no $srchStr in $file"
fi
done
当然,这不符合您的需求。但是请用一些代码发布一个新Q,其他人可能会帮助你。我不能在这上花很多时间(很快就会)。在unix find
上查找教程,这是列出所有文件的关键,这样你就可以用grep搜索它们。
IHTH