嗨,我想编写一个脚本,该脚本将转到包含许多文件的目录并搜索文件名,例如 test_HTTP_abc.txt 并搜索HTTP字符串模式,如果它包含此字符串,则设置一个等于某物的变量:
就像是:
var1=0
搜索 06 如果它包含 06 then var1=1 else var1=0 end if
但在 Unix 脚本中。谢谢
嗨,我想编写一个脚本,该脚本将转到包含许多文件的目录并搜索文件名,例如 test_HTTP_abc.txt 并搜索HTTP字符串模式,如果它包含此字符串,则设置一个等于某物的变量:
就像是:
var1=0
搜索 06 如果它包含 06 then var1=1 else var1=0 end if
但在 Unix 脚本中。谢谢
可能最简单的事情是:
if test "${filename#*HTTP}" = "$filename"; then
# the variable does not contain the string `HTTP`
var=0
else
var=1
fi
一些 shell 允许在[[
比较中进行正则表达式匹配,但没有必要在脚本中引入那种不可移植的代码。
像这样?
var=0
if fgrep -q 06 /path/to/dir/*HTTP*
then
var=1
fi
fgrep
如果其中一个文件匹配,则返回 0(“真值”),否则返回非真(包括没有匹配输入文件的情况)。
如果您想要匹配文件的列表,请尝试fgrep -l
.
好吧,我不会为你写脚本,你必须学习:)
如果您将其分解为较小的任务,则很容易;
该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 告诉我们您陷入难题的哪个地方。