2013-11-20 2 views
2

У меня есть папка, содержащая файлы журналов, все эти имена файлов соответствуют одному и тому же шаблону, единственное, что меняется, это дата, например: Sample_file_20131108.txt У меня есть сценарий bash, который занимает год, месяц и дату как ввод и обработка файлов, сгенерированных в эту конкретную дату.Работа с определенным набором файлов

Для примера ./myscript.sh 2011 обработает все сценарии, сгенерированные в 2011 году. ./myscript.sh 201108 обработает файлы, сгенерированные в 8-м месяце 2011 года. Я также могу указать определенную дату. Вот где я застрял, я хочу, чтобы указать дату с 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

Конструкция myscript.sh 201108{12..25} будет расширяться myscript.sh 20110812 20110813 20110814 ... так что ваш скрипт должен обрабатывать несколько входных аргументов, как правило, с петлей в то время как и команда shift.

while [[ -n "$1" ]] ; do 
    month=$1 
    for i in `find . -name "sample_file*$month*.txt"` 
    do 
    echo $i >> $LISTFILES 
    done 
    shift 
done 
Смежные вопросы