指定されたファイルサイズの範囲内でファイルとディレクトリツリーをコピーします。

指定されたファイルサイズの範囲内でファイルとディレクトリツリーをコピーします。

/pp/01 /pp/02/異なるディレクトリの例などのファイルを同じディレクトリデザインを使用して別のターゲットにコピーする小さなスクリプトを作成したいと思います。ただし、88 MB より大きく 93 MB より小さいディレクトリのファイルにのみ適用されます。

forループとfind関数を使いましょう。より効率的な方法がありますか?そして、検索機能を正確に実装する方法。

ベストアンサー1

このコマンドは次のとおりです。

rsync -a --min-size 88m --max-size 93m pp /new_destination/

構造をからにコピーしますが、ppサイズ/new_destinationが少なくとも88 MBから最大93 MBのファイルのみをコピーします。

必要に応じて、最終的なターゲット指定子の前にさらにソースツリーを追加できます。たとえば、次のようになります。

rsync -a --min-size 88m --max-size 93m pp/01 pp/02 /target/

ソース仕様に末尾のスラッシュ(pp/代わりに)を追加すると、ターゲットpprsyncディレクトリは作成されません。

つまり、pp最初の例では結果はです/new_destination/pp/01/...。一方:

rsync -a --min-size 88m --max-size 93m pp/ /new_destination/

代わりに結果は/new_destination/01/...、です/new_destination/02/...

-atoフラグはrsync「アーカイブ」を意味します。これはディレクトリで繰り返され、権限やタイムスタンプなどのファイルのメタデータを保存します。 (これは-rlptgoD非常に人気のあるオプションの組み合わせに対応する便利なオプションです。)

おすすめ記事