用于在文件名中搜索字符串模式的Shell脚本

时间:2013-01-14 13:41:48

标签: shell

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

类似的东西:

VAR1 = 0

搜索06 如果它包含06那么 VAR1 = 1 其他 VAR1 = 0 结束如果

但是在unix脚本中。谢谢

3 个答案:

答案 0 :(得分:2)

可能最简单的事情是:

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

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

答案 1 :(得分:1)

喜欢这个吗?

var=0
if fgrep -q 06 /path/to/dir/*HTTP*
then
    var=1
fi
如果其中一个文件中存在匹配,则

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

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

答案 2 :(得分:-1)

好吧,我不打算为你写剧本,你必须学习:)。

如果你把它分解成更小的任务就很容易;

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

筛选命令的输出。您可以将命令的输出存储到variable或使用pipes

您可以使用awklink),greplink)等搜索此输出。

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

foundit=1

为什么不首先尝试解决这个难题,而不是有人告诉你:D告诉我们你陷入困境的地方。