最も簡単な方法は、bash の代わりに zsh を実行することです。
rsync -a -- /path/to/directory/*(om[1,42]) remote-server:
括弧内は om
ファイルを逆の変更時間 (つまり、経過時間の昇順) および [1,42]
で並べ替えます。 最初の 42 件の一致を選択します。
ディレクトリではなく通常のファイルのみが必要な場合は、 .
を追加します 左括弧の後。その他の可能性については、zshexpn
の「glob qualifiers」の下を見てください。
/path/to/directory
をルートとするディレクトリ ツリー内のファイルを照合する場合 、そのディレクトリ内だけでなく、 /path/to/directory/**/*(.om[1,42])
を使用します .ただし、これにより、すべてのファイルがターゲット上の同じディレクトリに送信されます。
現在の作業ディレクトリからファイルを送信する場合:
rsync `ls -tp | grep -v / | head -n <n>` <destination> <options>
トリックを行います。例:
rsync `ls -tp | grep -v / | head -n 10` [email protected]:/dest/dir/ --progress --compress
現在の作業ディレクトリにファイルが見つからない場合、または上位ファイルのいずれかにスペースやその他の特殊文字が含まれている場合は、エラーが発生します。
ls -tp | grep -v / | head -n <n>
前後の ` 文字 コマンドを実行するようにbashに指示し、結果のファイルリストをスペース区切りのリストとして置き換えます。 -t
オプションは ls
を伝えます タイムスタンプでソートするには、-p
/
を追加するように指示します ディレクトリ名と grep 部分の後に /
で終わる行を除外します そのため、ディレクトリを送信することはありません。 -c
を追加 ls
に 最新のファイルを変更時間ではなく作成時間で判断する場合のオプション (ただし、一部のプログラムはファイルを更新する代わりにファイルを削除して置換するため、ファイルがより長く存在しているように見えても ctime と mtime が同じになる可能性があることに注意してください) ).
それが間違いなく最も簡単だとは言いません
(コメント内の mwm のサブ質問)
<ブロック引用>逆にどうですか?サーバーからローカルへ?
ローカルのもののようにrsyncコマンドラインで複数のリモートファイルソースを使用できるとは思わないため、これはもう少し複雑です。 rsync
を実行できます ssh
経由でサーバーに 、ローカル sshd
に戻るトンネルを開きます (同じ ssh
で rsync を実行する呼び出し) を介して接続を受信し、基本的に反対側から同じコマンドを使用しました。