如果Bash中不存在目录,则将文件递归复制到多个目录中

时间:2012-08-02 16:39:09

标签: bash directory copy

所以我需要将文件/home/servers/template/craftbukkit.jar复制到/ home / servers,Ex中的每个文件夹中。 / home / servers / server1,/ home / servers / server2等

但是如果/ home / servers / whateverserveritiscurrentlyon / mods不存在,我只想这样做。这就是我想出来的,并且想知道它是否会起作用:

echo " Script to copy a file to all server directories, only if mods does not exist in that directory"

for i in /home/servers/*/; do
    if [ ! -d "$i/mods" ]; then
    cp -f /home/servers/template/craftbukkit.jar "$i"
    fi
done

echo " completed script ..."

1 个答案:

答案 0 :(得分:2)

看起来它应该有效。要进行非破坏性测试,请将cp -f ...行更改为echo cp -f ...并查看输出。

它也可能有所缩短,但它不会对效率产生太大影响:

for i in /home/servers/*/
do
  [[ -d "${i}/mods" ]] || cp -f /home/servers/template/craftbukkit.jar "${i}/."
done