Any Ideas?

I have several staging directories on my UNIX server.

/usr2/data1
/usr2/data2
/usr2/data3
/usr2/data4
/usr2/data5
/usr2/data6

In these directories a file is transferred from different PC's connected to the network via TCP/IP. The File name is constant for all directories.

Transfers from the PC to the UNIX server could possibly take place several times during the day. Meaning - the information from PC1 that is sent to the UNIX server and placed in /usr2/data1 could possibly be sent several times during the course of the day or even several days before it is processed. I would like to write a script that would check each one of these directories and see if there is a file in there. The filename will be constant. My delima is this:

1) I don't want to overwrite a file that is currently sitting in that directory. So.. I would need to move the file out of the staging directory and place it over into a different directory. But let's suppose that when my script looks in this directory and sees a file in there... how am I to know whether the file has been completely transferred from the PC to the UNIX server? I don't want to try and move the file right in the middle of the ftp process between the PC and the UNIX server.

2) I want to rename the file and place it into a process directory for processing. However, I don't want to name the file the same name as a file that already exists in the directory.

3) I eventually want to cat all these files together for processing and move them out of my process directory into a hold directory in case something happened during the processing.

Anyone got any ideas ?

To check if the file is not being accessed by a process (even ftp) use fuser filename. Check the man page on fuser.

For renaming files - add the date or time to the file
date +%m%e%y-%T so each one is unique (add seconds if you have that many files)

You can cat multiple files into one using redirection.