次のコマンドは、含まれているfoo
(含まれていないbar
)すべてのファイルを再帰的に検索し、ターゲットディレクトリのディレクトリ構造を保持します。たとえば、/path/to/2017/foo.ps
respとを含むディレクトリの下に/path/to/2018/foo.pdf
サブディレクトリを作成します2017
。 。2018
~/path/to/dir/
foo.ps
foo.pdf
find . -iname \*foo\*pdf -exec rsync -R --exclude='*bar*' {} ~/path/to/dir/ \;
コピーの代わりにハードリンクで終わるこのコマンドと同等のものは何ですか?
ベストアンサー1
誰もこれを行っていないので、件名の質問に答えるにはを使用できます。通常、コピーの代わりにハードリンクを使用して--link-dest
rsync同期を使用する場合は、次のことができます。s/
d/
rsync -r --link-dest="$PWD/s/" s/ d/
ディレクトリ全体ではなくファイルを指定する特定の要件に応じて、次のことができます。
find . \
-iname \*foo\*pdf \
-exec bash -c '
rsync -R \
--exclude="*bar*" \
--link-dest="$PWD/$(dirname "$1")" \
"$1" \
~/path/to/dir/
' sh {} \;
ここでbashを導入した理由は、dirname
ファイルパスを取得できるためです。--link-dest
ファイル自体ではなくディレクトリが必要です。また、現在のディレクトリではなくターゲットディレクトリに基づいている$PWD
ために使用します。--link-dest