Linux查找并执行

时间:2013-09-04 13:31:41

标签: bash find

我需要编写一个Linux脚本,它执行以下操作: 从名为ftpuser的目录中查找所有.ear和.war文件,即使是那些将出现在那里的新文件,然后执行一个命令,它会生成一些报告。命令完成后,需要将这些文件移动到另一个目录。

下面我想我已经找到了命令的启动方式。我的问题是,是否有人知道如何在目录中找到新条目然后执行命令以便我可以获得报告?

find /directory -type f -name "*.ear" -or -type f -name "*.war" 

2 个答案:

答案 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