多くのファイルを含むディレクトリがあります。私が興味を持っている唯一のものは、拡張子が.である.jar
ファイルです。ただし、そのディレクトリには別のファイルがあります。
ソースディレクトリがありますただ .jar
文書。私は次のことを達成したいと思います:
rm destdir/*.jar
cp sourcedir/*.jar destdir
しかし、実際にはそうでなければいいのです。削除するすでに存在するファイル(すでに正しいファイルの場合)
つまり、次のコマンドを実行できるようにしたいと思います。
.jar
に存在するsourcedir
が存在しないファイルの場合は、destdir
そのファイルをコピーしてください。- とのファイルの場合は、の
.jar
コピーがのコピーと一致することを確認し、一致しない場合は上書きします。sourcedir
destdir
destdir
sourcedir
.jar
存在するすべてdestdir
についていいえsourcedir
、ファイルを削除してください。- その中の他のファイル
destdir
(拡張子なし).jar
は無視してください。削除または変更しないでください。
それ〜らしい渡す必要がありますrsync
。どうすればいいですか?
答え1
あなたはそれを使用することができます:
rsync -av --include='*.jar' --exclude='*' --delete \
sourcedir/ destdir/
このオプションは、リンクやタイムスタンプなどのアイテムを保存するアーカイブモードです(完全な手順については-a
ページを参照)。man
これは-v
詳細情報を提供するためのものです。ログに興味がない場合は削除してください。
これは最初の3つのオプションを処理する必要があります。この--delete
オプションは、除外されたファイルを無視しながら4番目の要件を満たします。
.jar
ファイルを含むディレクトリを含めるには、次のものを使用できます。
rsync -av --include='*.jar' --include='*/' --exclude='*' --delete \
sourcedir/ destdir/
ここにある回答に基づいて追加の質問がある場合は役立ちます。Rsyncフィルタ:1つのパターンのみをコピー