需要帮助来实现文件查看脚本

时间:2016-09-22 15:17:52

标签: bash

我需要帮助才能查看bash脚本文件。

我有30分钟的文件,我按日期命名的文件夹中的自动范围 例如:

/Data/ operator/20160515/EXPLOIT/
/Data/ operator/20160516/EXPLOIT/
/Data/ operator/20160517/EXPLOIT/

/Data/operator/20160518/PROD/
/Data/operator/20160518/PROD/
/Data/operator/20160518/PROD/

每个文件夹包含一天的文件,格式为" datehour-toto.tz"我想用脚本类型例如" send.sh 201605151530 201605171300"在ls示例中自动列出这两个日期之间的所有文件?

我不知道从哪里开始因为它让我的空气变得艰难?因为它需要2个日期和时间的每个文件检查器

我发现了一些可能是一个好的开始,但我不知道如何告诉EXPLOIT子目录

directory="data/"
find ${directory} -type f | awk -vSTART=$1 -vSTOP=$2 '
{
t = substr($0, length("'${directory}'")+10, 12)
}
t > START && t < STOP {
print
}'


./send.sh 201508190810 201508190900
 data/20150819/201508190821-toto.tz
 data/20150819/201508190823-toto.tz
 data/20150819/201508190820-toto.tz
 data/20150819/201508190822-toto.tz

如果有人能帮助我,我的英语不多。

1 个答案:

答案 0 :(得分:0)

这是一种更快捷的方式:

find data -maxdepth 2 -type d -name EXPLOIT |
  awk -v start=$1 -v end=$3 -F/ '$2>=start && $2<=end' |
  xargs -I{} find "{}" -type f |
  awk -v start=$1$2 -v end=$3$4 -F/ '$4>=start && $4<=end'

用法:

./send.sh 20160515 1530 20160517 1300

还有一种快速简便的方法可以在命令行而不是在脚本中执行此操作:

find data/2016051*/EXPLOIT -type f | awk -F/ '$4>=201605151530 && $4<=201605171300'

这是如何工作的?

find data/2016051*/EXPLOIT

在名为2016051 *的目录中找到名为EXPLOIT的目录,因此:20160510 - 20160519.它通过不考虑其他目录来节省时间。这种方式更快:

find data/2016051[567]/EXPLOIT

它在目录20160515,20160516,20160517内找到。

如果您想从20160529 - 20160601进行搜索,请尝试:

find data/20160*/EXPLOIT

或者,更快:

find data/20160[56]*/EXPLOIT