Bash脚本以递归方式将文件添加到多个目录

时间:2012-08-03 16:54:01

标签: bash directory copy

我在/ home / servers2中有一堆目录(比如几千个),在server2的每个目录中都有一个名为plugins Ex的目录。 /家庭/ servers2 / MyServer的/插件

现在每个人都有一个名为AutoStopFinal.jar的文件,我需要将其删除,然后通过/ home / servers / template / plugins将AutoStop1.3.001复制到plugins目录。 我想非破坏性地测试它,所以我尝试了这个:

echo " Script to copy a plugin to all server plugin directories"

for i in /home/servers2/*/plugins; do
    echo rm -f $i/AutoStopFinal.jar
    echo cp -f /home/servers/template/plugins/AutoStop1.3.001.jar "$i"
done

echo " completed script ..."

但只有Script才能将插件复制到所有服务器插件目录。大约5分钟后我控制了C'd。但是我没有从循环中得到回声,有什么建议吗?

2 个答案:

答案 0 :(得分:3)

您可以使用find为您执行此操作:

cd /home/servers2
find . -type d -name plugins -exec cp -f /home/servers/template/plugins/AutoStop1.3.001.jar {} \; -exec rm -f {}/AutoStopFinal.jar \;

答案 1 :(得分:1)

此命令将删除文件:

find ./servers2 -name AutoStopFinal.jar |xargs -n1 rm

此命令将新文件复制到位:

find ./servers2 -name plugins |xargs -n1 cp ./servers/template/plugins/AutoStop1.3.001.jar