2012-08-03 66 views
1

我在/ home/servers2中有一堆目錄(如幾千),並且在server2的每個目錄中都有一個名爲plugins Ex的目錄。/home/servers2/MyServer/pluginsBash腳本以遞歸方式將文件添加到多個目錄

現在每一個都有一個名爲AutoStopFinal.jar的文件,我需要將其刪除,然後將AutoStop1.3.001複製到/ home/servers/template的plugins目錄/插件。 我想非destuctivly測試,所以我嘗試這樣做:

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分鐘後,我控制了它。但是我沒有從循環內部迴應,有什麼建議?

+0

沒有輸出意味着甚至沒有「將插件複製到所有服務器插件目錄的腳本」和「完成的腳本...」 – 2012-08-03 16:58:27

+0

我的錯誤,它確實讓腳本複製一個插件到所有插件目錄 – 2012-08-03 17:00:03

+0

也許路徑擴展不匹配 – 2012-08-03 17:01:48

回答

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

此命令將刪除文件:

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

該命令將新的文件複製到的地方:

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