我需要编写一个Linux脚本,它执行以下操作: 从名为ftpuser的目录中查找所有.ear和.war文件,即使是那些将出现在那里的新文件,然后执行一个命令,它会生成一些报告。命令完成后,需要将这些文件移动到另一个目录。
下面我想我已经找到了命令的启动方式。我的问题是,是否有人知道如何在目录中找到新条目然后执行命令以便我可以获得报告?
find /directory -type f -name "*.ear" -or -type f -name "*.war"
答案 0 :(得分:2)
您似乎希望脚本无限期运行。遍历您find
的文件以执行所需的操作:
while : ; do
for file in $(find /directory -type f -name "*.[ew]ar"); do
some_command "${file}" # Execute some command for the file
mv "${file}" /target/directory/ # Move the file to some directory
done
sleep 60s # Maybe sleep for a while before searching again!
done
答案 1 :(得分:1)
这也可能有所帮助:Monitor Directory for Changes
如果它不是时间关键,但你不愿意在每次重启后手动启动脚本(如devnull建议的那样),我建议使用cron-job。
您可以使用
设置作业crontab -e
并附加一行如下:
* * * * * /usr/bin/find /some/path/ftpuser/ -type f -name "*.[ew]ar" -exec sh -c '/path/to/your_command $1 && mv $1 /target_dir/' _ {} \;
这会每分钟运行一次搜索。您可以更改间隔,请参阅https://en.wikipedia.org/wiki/Cron以获取概述。 和&&导致移动仅在your_command成功时执行。您可以通过手动运行来检查,然后是
echo $?
0表示真实或成功。有关详细信息,请参阅http://tldp.org/LDP/abs/html/exit-status.html