[Solved] For loop help

Hello,

This is really breaking my head. I request you help to solve this problem.

I have a list of files at the source directory (/tmp) as below,

NewTransfer_20131202_APAC.dat
NewTransferFile_20131202_APAC.dat
NewTransfer_20131203_APAC.dat
NewTransferFile_20131203_APAC.dat
NewTransfer_20131204_APAC.dat
NewTransferFile_20131204_APAC.dat

and some other files with dates which are not of my interest at the moment (/tmp).

NewTransfer_20131102_APAC.dat
NewTransferFile_20131102_APAC.dat
NewTransfer_20131103_APAC.dat
NewTransferFile_20131103_APAC.dat
NewTransfer_20131104_APAC.dat
NewTransferFile_20131104_APAC.dat

I want my desired output to be as below, coz im just trying to get the files for the date im passing through the first FOR loop (20131202, 20131203 & 20131204)

NewTransfer_20131202_APAC.dat
NewTransferFile_20131202_APAC.dat
NewTransfer_20131203_APAC.dat
NewTransferFile_20131203_APAC.dat
NewTransfer_20131204_APAC.dat
NewTransferFile_20131204_APAC.dat

but I get the following output,

NewTransfer_20131102_APAC.dat
NewTransfer_20131103_APAC.dat
NewTransfer_20131104_APAC.dat
NewTransfer_20131202_APAC.dat
NewTransfer_20131203_APAC.dat
NewTransfer_20131204_APAC.dat
NewTransferFile_20131102_APAC.dat
NewTransferFile_20131103_APAC.dat
NewTransferFile_20131104_APAC.dat
NewTransferFile_20131202_APAC.dat
NewTransferFile_20131203_APAC.dat
NewTransferFile_20131204_APAC.dat
NewTransfer_20131102_APAC.dat
NewTransfer_20131103_APAC.dat
NewTransfer_20131104_APAC.dat
NewTransfer_20131202_APAC.dat
NewTransfer_20131203_APAC.dat
NewTransfer_20131204_APAC.dat
NewTransferFile_20131102_APAC.dat
NewTransferFile_20131103_APAC.dat
NewTransferFile_20131104_APAC.dat
NewTransferFile_20131202_APAC.dat
NewTransferFile_20131203_APAC.dat
NewTransferFile_20131204_APAC.dat
NewTransfer_20131102_APAC.dat
NewTransfer_20131103_APAC.dat
NewTransfer_20131104_APAC.dat
NewTransfer_20131202_APAC.dat
NewTransfer_20131203_APAC.dat
NewTransfer_20131204_APAC.dat
NewTransferFile_20131102_APAC.dat
NewTransferFile_20131103_APAC.dat
NewTransferFile_20131104_APAC.dat
NewTransferFile_20131202_APAC.dat
NewTransferFile_20131203_APAC.dat
NewTransferFile_20131204_APAC.dat

SCRIPT:

dt="20131202 20131203 20131204"

export EXEC_DATE_TIME=`date +%Y%m%d%H%M%S`

src="/tmp"
dst="/tmp/inbox"
dtn="20131231"

for dname in $dt
do
        for fname in `ls $src/*_$dname_* | grep "Transfer"`
        do
				fn=`basename ${fname}`
				echo $fn
        done
done

Try this:

The inner loop should be

  for fname in $src/*Transfer*_${dname}_*
  do
    [ -f $fname ] || continue  
    fn=`basename $fname`
    echo $fn
  done

@ahmedwaseem2000: Thank you bro, ur suggestion works good when i remove the outer loop. Therefore making the code more efficient :slight_smile:

@MadeInGermany: Thank you bro, ur code works exactly what i was expecting for :slight_smile:

Thanks all for your valuable suggestions.