ターゲットディレクトリに存在しないフォルダのみを移動してください。

ターゲットディレクトリに存在しないフォルダのみを移動してください。

ターゲットディレクトリにまだ存在していないLinuxサーバー上のフォルダを移動する方法を探しています。

例:

宛先ディレクトリ

folder1
folder2
folder3
folder4

ソースコードディレクトリ

folder1
folder2
folder5
folder6
folder7

folder1ソースディレクトリからfolder2ターゲットディレクトリのフォルダを上書きしたくありません。ソースディレクトリの内容はターゲットディレクトリの内容folder1と異なる場合がありますが、folder2これらの変更をコピーしたくありません。

これはCentOS 7サーバーにあり、操作に必要なすべてのツールを許可します。

移動しないフォルダのリストは動的であるため、静的に設定したくありません。

答え1

ソース内の各ディレクトリを介してループを設定することでこれを行うことができます。ターゲットにその名前のディレクトリがない場合は移動します。bourne snippit:

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

ソースのディレクトリと名前が同じ場合、ターゲットのファイルが破損または上書きされます。強力になりたい場合は、いくつかの追加チェックを追加する必要があります。

関連情報