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

用于在文件名中搜索字符串模式的Shell脚本,shell,Shell,您好,我想编写一个脚本,它将进入一个包含许多文件的目录,并搜索一个文件名,例如test_HTTP_abc.txt,然后搜索HTTP字符串模式,如果它包含此字符串,则将变量设置为: 比如: var1=0 搜索06 如果它包含06,那么 var1=1 其他的 var1=0 如果结束 但是在unix脚本中。谢谢好吧,我不打算为你写剧本,你必须学会:) 如果你把它分解成更小的任务,这很容易 ls命令用于查看目录的内容。您还可以使用find命令更直观一些,比如find/some/folder-name“*

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

比如:

var1=0

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


但是在unix脚本中。谢谢

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

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

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

对命令的输出进行筛选。您可以使用将命令的输出存储到或

您可以使用类似于
awk
()、
grep
()等内容搜索此输出

在bash中设置变量也很容易

foundit=1

为什么你不试着先解决这个难题,而不是有人告诉你:D告诉我们你在哪里被困在这个难题中。

像这样

var=0
if fgrep -q 06 /path/to/dir/*HTTP*
then
    var=1
fi
如果其中一个文件中存在匹配项,
fgrep
将返回0(“真值”),否则返回非真值(包括没有匹配输入文件的情况)


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

最简单的方法可能是:

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

有些shell允许在
[[
比较,但是没有必要在脚本中引入这种不可移植的代码。

这更适合超级用户问答网站。但是无论如何,你有没有看过
fgrep
?HTTP和06之间的关系是什么?这些是固定的还是用作参数的?我是否正确理解你想要c检查名称包含HTTP的所有文件,如果文件(不是文件名)包含“06”,则返回1?-1对于使用
ls
的无用用法的建议。为什么这是无用的,你要试着告诉我你从来没有使用过
ls
,你知道每个目录中都有什么吗?我们怎么知道这个人甚至知道
ls
命令?所以我要提到它。因为和频繁的反模式使用
ls*HTTP*
你所需要的只是
echo*HTTP*
我没有说他应该解析
ls
的输出,只是用它来查看目录;如果他不检查
ls
,他怎么知道他的脚本在工作呢?我提到了
find
用于解析输出到/来自(但这是他自己的工作)。在否决表决前阅读。如果这是问题的意思,那么作为最简单的事情,
case$filename in*HTTP*)var=1;;*)var=0;;esac
怎么样?@triplee我同意;case语句更好。