元のフォルダのフォルダ構造を削除せずにファイルとフォルダを移動する

元のフォルダのフォルダ構造を削除せずにファイルとフォルダを移動する

私が望むのは、ファイル(およびサブフォルダ)が特定のフォルダに追加されたときに移動することですが、ソースとターゲットでは元のフォルダ構造を維持したいと思います。私はこれが例えば簡単に説明できると信じています。次のフォルダ/ファイル構造を想像してください。

/source/foo/bar1
/source/bar2
/dest

次のフォルダ/ファイル構造を保持したいと思います。

/source/foo
/dest/foo/bar1
/dest/bar2

これを自動的に行う方法はありますか?ご回答ありがとうございます。

ベストアンサー1

rsyncすべてをコピーしてから、ソースからディレクトリを除くすべてを削除するために使用されます。たとえば、次のようにします(sourceファイルを含むディレクトリとbar2ファイルを含むサブディレクトリ)。foosource/foo/bar2

$ tree source/
source/
├── bar2
└── foo
    └── bar1

1 directory, 2 files

次を実行します。

rsync -r source/ dest/

これにより、以下が生成されます。

    $ tree dest/
dest/
├── bar2
└── foo
    └── bar1

1 directory, 2 files

ディレクトリ以外のすべてのエントリを削除しますsource

find source/ -not -type d -delete

またfindはない場合は、以下を-delete使用してください。

find source/ ! -type d -exec rm {} +

自動化するには、次のような小さなスクリプトを作成します。

#!/bin/sh

source="$1"
dest="$2"

rsync -r "$source"/ "$dest"/ 
find "$source"/ -not -type d -delete

スクリプトを実行可能にし、ソースディレクトリとターゲットディレクトリを引数として使用して実行します。

foo.sh /source /dest

おすすめ記事