SUSE 10.0 xargs and opening different file extensions

I am using SUSE 10.0.  I have some files that appear either as .zip or .txt randomly.  Each file has a date / time stamp connected to them.  They are in the following format.

    The "BOBapp04-04-2006@19-00-" are standard.  I can add in a date function to that portion of the file.  The 05 is the second and that seems to be random within 20 seconds depending on when the script actually runs.  I would like to determine if it is a txt or zip, extract if it is a zip, then change the file name to something that is not random (but keep the date functionality).

Does anyone have any recommendations?  I'm giving alot of points for this as I want to test the script to get it working before giving out the points!

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Can you elaborate on "something that is not random" ?

Everything you mentioned so far is a one-liner.
awakeningsAuthor Commented:
I would love the file name to be;

BOBapp04-04-2006@19-00.txt for example.
for Z in *.zip; do unzip "$Z"; done
for T in *\@[0-9][0-9]-[0-9][0-9]-[0-9][0-9].txt; do \mv -i "$T" "${T%-??.txt}.txt"; done
awakeningsAuthor Commented:

      I am testing things here.  You will have to forgive the fact I am a little slow.  I am a windows guy attempting to learn Linux.  I did some testing with some of this.  I could type in unzip BOBapp04-04-2006* and it would unzip the file.  I could type in mv BOBapp04-04-2006@15-00-??.txt app04-04-06.txt and the file would rename.  What I do not get is how do I collect random files and if they are zip, unzip and rename themthem and if they are txt file just rename them.  I was told the xargs command could do that.  Do you have another suggestions?

     I must admit I did not fully understand the statements above as I am no programmer.  How do I take this stuff and make it into a cron job?  I have the date functionality down so that will be easy.  I know how to do a cron job, but I am fuzzy on taking the random endings (txt or zip) and turn them into just functional txt file.  I then intend to run another cron job to run the files through swatch.  I am trying to automate a process to make things easier for me.


You would only need xargs if you are going to have more than 64 KB worth of filenames, at that point *.txt or *.zip will make the argument list too long.
If you run in to that problem, you could use these commands instead of my last example:

    find . -name \*.zip -print0 | xargs -0 -n1 unzip
    find . -name "*@[0-9][0-9]-[0-9][0-9]-[0-9][0-9].txt" -print0 | xargs -0 -n1 sh -c 'mv -i "$1" "${1%-??.txt}.txt"' none

> What I do not get is how do I collect random files and if they are zip

Shell wildcards let you pass filename(s) using wildcards.   Try this out:

    echo Hello World
    echo *.zip
    echo *.txt

Another method, usually used only when you're going to have massive amounts of files, is find piped to xargs.  E.g:

   find . -name "*.txt" | xargs echo
   find . -name "*.txt" | xargs -n1 echo

xargs takes the filenames piped to it and passes them to the command you specify, running the command multiple times if the argument list is too long.

To add the commands to a cron job, just put them in a shell script, chmod +x it, and specify the full path to it in your cron job.
To create a shell script, simply create a file, put the following line at the top:


and put your commands after it.   Since a cron job will start in your home directory, you'll probably need to have a cd command which changes to the directory where the files are located before executing your commands.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.