使用特定的文件集

时间:2013-11-20 15:20:09

标签: bash

我有一个包含日志文件的文件夹,所有这些文件名都遵循相同的模式,唯一改变的是例如日期:Sample_file_20131108.txt我有一个bash脚本,它将年,月和日期作为输入和处理在该特定日期生成的文件。

例如./myscript.sh 2011将处理2011年生成的所有脚本./myscript.sh 201108将处理2011年第8个月生成的文件。我也可以指定某个日期。这就是我被困住的地方,我希望能够指定一个月的18-25之间的日期。我尝试将此作为输入myscript.sh 201108{12..25},但这不起作用。所以我试图找出如何将其纳入脚本。

这是我所拥有的

if [ $# -ne 1 ]
then
     echo $#
     exit 1
fi

month=$1

#2. Find files of the month to process
LISTFILES=$TEMPDIR/listfiles.txt.$$
echo ''
echo '#2. Finding the files to process'
for i in `find . -name "sample_file*$month*.txt"`
do
echo $i  >> $LISTFILES
done
echo 'done'

1 个答案:

答案 0 :(得分:1)

构造myscript.sh 201108{12..25}将扩展为myscript.sh 20110812 20110813 20110814 ...,因此您的脚本必须处理多个输入参数,通常使用while循环和shift命令。

while [[ -n "$1" ]] ; do
  month=$1
  for i in `find . -name "sample_file*$month*.txt"`
  do
    echo $i  >> $LISTFILES
  done
  shift
done