问题
I have a cron job which cd
into a directory and performs actions.
For example:
0 12,00 * * * cd /var/lib/test/0001 && cp *.zip /home/bobby/
However, the program that creates the .zip files in /var/lib/test/0001
changes the directory name every day. So on the second day, the directory is /var/lib/test/0002
and on the third day /var/lib/test/0003
and so on. This model cannot be changed.
Of course, when the directory migrates from 0001
to 0002
, the cronjob fails.
Is there a way to use cron to cd
into 000*
and then 001*
and so on so that the cp
command will be run? Perhaps there is an alternative way? Thank you.
EDIT MARCH 13:
There is another issue that I am finding hard to solve.
I only want to cp
files that are above a certain filesize. I want to copy .zip files to /home/bobby/
which are more than 28,000 bytes. If they are less than 28,000 bytes, then they don't get copied. How would I do this, thanks?
As before, this would happen in /var/lib/test/****
(where ****
goes from 0000
to FFFF
and increments every day).
回答1:
You can do this with sample script:
dir=$(ls -tr1 /var/lib/test|tail -1)
cd /var/lib/test/$dir && cp *.zip /home/bobby/
ls
get the list of files sort by time in reverse order so the last one is the last directory. And then we use it further.
来源:https://stackoverflow.com/questions/60627504/how-can-i-use-a-cronjob-when-another-program-makes-the-commands-in-the-cronjob-f