14日と10kを超えてファイルを検索し、見つかったファイルを宛先にrsyncしたい。
これら2つのコマンドを組み合わせる方法はありますか?
find ./ -mtime +14 -size +10k
rsync --remove-sent-files -avz /src /dest
以下に概説するオプションのいずれかを使用して、findの出力をrsyncに送信できます。
これらの2つのオプションは非常によく似ています。どちらも、ディレクトリを特定の場所に変更し、そこからfind
コマンドを実行することを前提としています。
$ rsync -avz --remove-sent-files \
--files-from=<(find ./ -mtime +14 -size +10k) ./ /dest
パイプを使用してリストをフィードすることもできます。
$ find ./ -mtime +14 -size +10k -print0 \
| rsync -av --files-from=- --from0 ./ /dest
このメソッドはどこからでも実行できます。
$ find /src/dir/ -mtime +14 -size +10k -printf %P\\0 \
| rsync --files-from=- --from0 /src/dir/ /dst/dir/
printf %P
:ファイルの名前と削除されたコマンドライン引数の名前。この方法では、任意のsrcディレクトリを使用できます。最初にsrcディレクトリにcdする必要はありません。