Se, como você explicou em seus comentários, seu objetivo final aqui é encontrar todos os arquivos modificados dentro de um determinado período, salvar o referido intervalo em uma variável é inútil. Em vez disso, você pode fornecer o intervalo para find
diretamente:
find . -mtime $start -mtime $end
Pessoalmente, eu usaria uma abordagem diferente. Basta criar dois arquivos temporários, um criado um segundo antes da data de início e um criado um segundo após a data de término. Em seguida, use o -newer
test do GNU find para encontrar arquivos mais novos que o primeiro e não mais recentes que o último.
O bit complicado está recebendo $start
e $end
corretamente. Você poderia tentar algo como:
#!/usr/bin/env bash
## If you really want to use this format,
## then you must be consistent and always
## us YYYYMMDD and HHMMSS.
startdate=20141030
starttime=165800
enddate=20141120
endtime=175050
## Get the start and end times in a format that GNU date can understand
startdate="$startdate $( sed -r 's/(..)(..)(..)/::/' <<<$starttime)"
enddate="$enddate $( sed -r 's/(..)(..)(..)/::/' <<<$endtime)"
## GNU find has the -newer test which lets you find files
## that are newer than the target file. We can use this
## and create two temporary files with the right dates.
tmp_start=$(mktemp)
tmp_end=$(mktemp)
## Now we need a date that is one seond before the
## start date and one second after the end date.
## We can then use touch and date to set the creation date
## of the temp files to these dates.
minusone=$(date -d "$startdate -1 sec" +%s)
plusone=$(date -d "$enddate +1 sec" +%s)
## Set the creation times of the temp files.
## The @ is needed when using seconds since
## the epoch as a date string.
touch -d "@$minusone" $tmp_start
touch -d "@$plusone" $tmp_end
## At this point we have two files, tmp_start and
## tmp_end with a creation date of $startdate-1
## and $enddate+1 respectively. We can now search
## for files that are newer than one and not newer
## than the other.
find . -newer $tmp_start -not -newer $tmp_end
## Remove the temp files
rm $tmp_start $tmp_end