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