-1

嗨,我想编写一个脚本,该脚本将转到包含许多文件的目录并搜索文件名,例如 test_HTTP_abc.txt 并搜索HTTP字符串模式,如果它包含此字符串,则设置一个等于某物的变量:

就像是:

var1=0

搜索 06 如果它包含 06 then var1=1 else var1=0 end if

但在 Unix 脚本中。谢谢

4

3 回答 3

2

可能最简单的事情是:

if test "${filename#*HTTP}" = "$filename"; then
  # the variable does not contain the string `HTTP`
  var=0
else
  var=1
fi

一些 shell 允许在[[比较中进行正则表达式匹配,但没有必要在脚本中引入那种不可移植的代码。

于 2013-01-14T13:52:08.580 回答
1

像这样?

var=0
if fgrep -q 06 /path/to/dir/*HTTP*
then
    var=1
fi

fgrep如果其中一个文件匹配,则返回 0(“真值”),否则返回非真(包括没有匹配输入文件的情况)。

如果您想要匹配文件的列表,请尝试fgrep -l.

于 2013-01-14T13:51:14.473 回答
-1

好吧,我不会为你写脚本,你必须学习:)

如果您将其分解为较小的任务,则很容易;

ls命令用于查看目录的内容。您还可以使用该find命令更直观一些,例如find /some/folder -name "*string*"

筛选命令的输出。您可以将命令的输出存储到变量或使用管道

您可以使用awk( link )、grep( link ) 等搜索此输出。

在 bash 中设置变量也很容易;http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-5.html

foundit=1

您为什么不先尝试解决这个难题,而不是让别人告诉您:D 告诉我们您陷入难题的哪个地方。

于 2013-01-14T13:49:58.263 回答