Hi. I have a bunch of tif images in the directory with the following naming convention:
1.tif
2.tif
3.tif
.
.
.
n.tif
There are over 1000 tif images in this dir. I'm running a for loop to rename *.tif in this dir to <YYYYMMDD><NNNN>.tif, where YYYYMMDD is the current date (duh), and NNNN is a 4-digit sequence number beginning with 1 and incrementing with each tif image.
I also have an input csv file that references the images. I'm reformatting the csv file and including it in a zip file at the end of processing, which also contains the re-named zip files.
The problem I'm having is that the output csv matches the data in the input csv (and re-formatted properly), but the transactions in the output csv reference the wrong images.
I've discovered that the problem is in the For loop. This is the code:
The problem is that this sequences the files in the following order:
1.tif
10.tif
100.tif
1000.tif
etc
So my second transaction in the output csv file references the 10th image in the directory, the 3rd transaction in the csv file references the 100th image in the directory, and so on.
How do I make the loop sort by image number properly?
Yes, rdc.... you're on the right track. This was the actual solution that I went with:
The problem was that the transactions in the csv file had the tif images listed as 1.tif, 2.tif, 3.tif, ..., n.tif, but the previous code was sorting them as 1.tif, 10.tif, 100.tif, etc. So the 2nd transaction in the output csv referenced the 10th tif image, the 3rd referenced the 100th tif image, and so on.
It has to do with the way unix sorts (collates) values in a "for i in *.tif..." looping scenario. If one needs to have the numeric portion of the file names to maintain their sequence value, then my code above works.
Hi,
I just have started learning shell scripting (sh). Why do i only get the date?
while read dt
do
echo "Date : ${dt}
sed -n '/${dt}/,/${dt}/p' file1.log | grep -w ERROR
done < date1.dat
INPUT - date1.dat
2019-04-05 04:58:25
2019-04-05 04:58:26
2019-04-05 05:00:56... (3 Replies)
Hi Team,
I have for loop in my shell script. Which basically loop through all files in the directory, When some files are in the directory it works just fine.
But if there are no files at all..still the for loop try to execute. Please help. Below is the code.
#!/bin/ksh
echo "Program... (5 Replies)
Hi,
i=0
t5=6000001
while
do
i=`expr $i + 1`
t5=`expr $t5 + 1`
echo $t5
done
I am able to increment "col3" value but unable to get col1,col2 value.
Input:
t1=10001
t2=abc
t3=ghkc (5 Replies)
Hi all,
I have a file like this
ID 3BP5L_HUMAN Reviewed; 393 AA.
AC Q7L8J4; Q96FI5; Q9BQH8; Q9C0E3;
DT 05-FEB-2008, integrated into UniProtKB/Swiss-Prot.
DT 05-JUL-2004, sequence version 1.
DT 05-SEP-2012, entry version 71.
FT COILED 59 140 ... (1 Reply)
Hi,
I am trying to move a file from remote server to local server and when the transfer completes successfully i call a script in remote server to remove the file which was successfully transferred.
I do this by first getting the list of file in remote server and move the text file to local... (8 Replies)
Hi, my script is waiting for 3 files to come to a folder for 30 min but even when all the files arrive in the folder it's still waiting for these three files. Files can come with in 2 min and I want it to start processing them immediately after all the files arrive in the folder.
until ; do... (3 Replies)
function ext
{
echo "THANKS & WELCOME BACK"
}
function upc
{
echo "TO EXPORT UPROC GIVE UPROC NAME PER LINE IN THE input.txt and PRESS Y"
echo "TO GO BACK PRESS 99"
read parm0
if ;
then
start
elif ;
then
for i in `cat input.txt` ; do
echo $i
$UXEXE/uxext upr upr=$i... (0 Replies)
I am using a for loop in a shell. My question is how does it list out the files in the example below. Does it list the files by name? How can I list the files by date so it will list the oldest file first in the sequence.
Thanks!
for f in /dir/*.*
echo $f
end (2 Replies)
Hi,
Following is my code and the file FILE_LIST_EXCESS.txt has 40 file names in it
while read LineIn
do
echo ${LineIn}
`ftp -vin << END_INPUT >> ${PID}_DS_GET_Log.log 2>&1
open servername
user userid password
cd FileDir
get ${LineIn}
END_INPUT`... (4 Replies)
I was wondering how I can modify this for loop, so it only loops through the filenames that do not have an ".old" extension.
for filename in $(ls "$1")
do
echo $filename | grep '\.old$' > /dev/null
if
then mv $1/$filename $1/$filename.old
fi
done (5 Replies)