仅移动目标目录中不存在的文件夹

仅移动目标目录中不存在的文件夹

我正在寻找一种方法来移动 Linux 服务器上目标目录中尚未存在的文件夹。

例子:

目标目录

folder1
folder2
folder3
folder4

源码目录

folder1
folder2
folder5
folder6
folder7

我不想从源目录folder1folder2覆盖目标目录中的文件夹。源目录中的内容可能folder1folder2目标目录中的内容不同,但我不希望复制这些更改。

这是在 CentOS 7 服务器上,并且接受该工作所需的任何工具。

不移动的文件夹列表是动态的,因此我不想静态设置它。

答案1

您可以通过在源中的每个目录中设置一个循环来完成此操作,如果目标中没有该名称的目录,则会移动它:bourne snippit:

for dir in `cd "$sourcedir" ; ls -1F | grep '/'`
do
  if [ ! -d "${targetdir}/${dir}" ]
  then
    mv "$dir" "${targetdir}/"
  fi
done

请注意,如果目标中的文件与源中的目录同名,这将破坏或覆盖文件。如果你希望它健壮,你应该添加一些额外的检查。

相关内容