查找没有字符串的目录(在Putty环境中)中的文件

时间:2017-02-22 04:08:27

标签: unix

我首先需要在库中查找没有字符串的文件。然后,在生成的文件名中,我需要搜索带有字符串的文件。

首先,我在命令行上尝试了grep -L但它不起作用。 我是unix的新手,任何人都可以帮助建立这个逻辑。

谢谢!

1 个答案:

答案 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