私のディレクトリ構造は次のとおりです。
/books/a.epub
/books/sub/b.epub
/books/test/c.epub
みんな探したいルートディレクトリ(/books/)とサブディレクトリ(/books/)にある.epubファイル/)rsyncを使用して* .epubファイルのみをリモートディレクトリにコピーします。
これまで私は次のことを試しました。
rsync -av --include='*.epub' --include='*/' --exclude='*' /media/share/Books/ /home/user/docker/calibre/books/
しかし、ディレクトリも同期しています。
出力は次のようになります。
/a.epub
/b.epub
/c.epub
ベストアンサー1
あなたがそれを持っていて無料ならfind
、xargs
あなたはこれをすることができます:
find . -type f -iname "*.epub" -print0 | xargs -0 -I {} rsync -aPEmivv "{}" "/destination/directory"
使用したくない場合xargs
:
find . -type f -iname "*.epub" -exec rsync -aPEmivv "{}" "/destination/directory" \;
(両方の亜種が/books/
ディレクトリで実行されます)
ただし、-a
必要なオプション(再帰、シンボリックリンク、辞書権限、保存時間、所有者の保持、グループの維持、デバイスファイルの維持)を決定します。rsync
-rlptgoD
ファイル名を別のプログラムにパイプするときは、ファイル名の特殊文字によって問題が発生しないように、NULL区切り文字列を使用することをお勧めします(NULL区切り入力の場合は-print0
スイッチin find
、-0
in xargs
、およびinを使用)。rsync