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