好的,我对编程非常陌生,但我理解如何概念化和谈论我想要什么,需要学习和找到更好的东西。
目前我正在使用目录/Food
并拥有我已从多个网站下载的.html
个网页。
我想创建一个脚本来基本上使用目录/Food
以及此文件夹及其子目录中的所有文件,并比较包含我输入的相同字符串的文件的文本。 / p>
类似于:
commandforsearchingtextfiles [option for directory]/food *.[or command for all files following this directory path]
salt (string1)
sugar (string 2)
flour (string 3)
echo results
结果/输出应该是包含字符串的文件......如果你可以添加关于如何组织输出的额外想法
再说一遍,如果有这个问题,请指出我在哪里可以了解这一点,但如果您有任何快速建议或快速脚本,那也很棒。
答案 0 :(得分:1)
...如果是这样,基本的linux命令就可以很好地应对。
例如搜索包含salt的所有文件......
find Food/ -type f -name "*.html" -print0 | xargs -0 grep salt
可以通过向各种命令添加更多开关来缩小/扩大搜索范围,例如不区分大小写:
find Food/ -type f -name "*.html" -print0 | xargs -0 grep -i salt
或只是文件名(不是匹配的文字)
find Food/ -type f -name "*.html" -print0 | xargs -0 grep -l salt
更多检查“grep -h”。
可以使用多字短语
find Food/ -type f -name "*.html" -print0 | xargs -0 grep -i "the quick brown fox"
但是有一个额外的复杂性 - HTML本身并不关心空白,所以这个短语可以分成多行。这意味着文档中的空格可能与您的搜索不同。例如以上不匹配
但是有效的HTML。使用正则表达式解决...
find Food/ -type f -name "*.html" -print0 | xargs -0 grep -iE "the[[:space:]]+quick[[:space:]]+brown[[:space:]]+fox"
但它开始变得凌乱。
你可以将它放在.sh中,所以不必输入所有内容。
例如
#!/usr/bin/sh
find Food/ -type f -name "*.html" -print0 | xargs -0 grep -i "$*"
保存为文件时。并且可执行,可以运行运行测试searc
find_in_food salt
将显示文件名列表。
(这当然几乎没有涉及到这可能的表面!)