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

Bash脚本以递归方式将文件添加到多个目录,bash,directory,copy,Bash,Directory,Copy,我在/home/servers2中有很多目录(大约几千个),在server2的每个目录中都有一个名为plugins Ex./home/servers2/MyServer/plugins的目录 在每一个文件中都有一个名为autostopfail.jar的文件,我需要删除它,然后通过AutoStop1.3.001从/home/servers/template/plugins复制到plugins目录。 我想进行非破坏性测试,所以我尝试了以下方法: echo " Script to copy a plu

我在/home/servers2中有很多目录(大约几千个),在server2的每个目录中都有一个名为plugins Ex./home/servers2/MyServer/plugins的目录

在每一个文件中都有一个名为autostopfail.jar的文件,我需要删除它,然后通过AutoStop1.3.001从/home/servers/template/plugins复制到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 ..."

但只获得了将插件复制到所有服务器插件目录的脚本。大约5分钟后我控制住了C。但是我没有收到回路内部的回音,有什么建议吗?

您可以使用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 \;

您可能可以使用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 \;

此命令将删除以下文件:

find ./servers2 -name AutoStopFinal.jar |xargs -n1 rm
此命令将新文件复制到位:

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

此命令将删除以下文件:

find ./servers2 -name AutoStopFinal.jar |xargs -n1 rm
此命令将新文件复制到位:

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

没有输出意味着甚至没有“将插件复制到所有服务器插件目录的脚本”和“已完成的脚本…”我的错误,它确实提供了将插件复制到所有插件目录的脚本可能路径扩展不匹配如果/home/servers下真的有几千个目录,一个命令行中可能有太多的命令。你必须使用
find
命令。没有输出意味着甚至没有“将插件复制到所有服务器插件目录的脚本”和“已完成的脚本…”我的错误,它确实提供了将插件复制到所有插件目录的脚本可能路径扩展不匹配如果/home/servers下确实有几千个目录,一个命令行中可能有太多的命令。您必须使用
find
命令。