Unix/Linux OS 上で指定された数のランダムファイルを移動する方法 質問する

Unix/Linux OS 上で指定された数のランダムファイルを移動する方法 質問する

私はこの簡単なタスクに直面していますが、それを実行する最も簡単で短い方法は何かについても考えています。

私の提案は、指定された数のランダム ファイルをディレクトリから別のディレクトリに移動することです。このタスクは、機械学習に必要な 2 つのデータセット (トレーニング セットとテスト セット) の作成の一部です。私の目標は、分類子をテストできるデータセットを取得するためにディレクトリからファイルの 10% を移動し、ソース ディレクトリからトレーニング セットを取得することです。

では、この「n 個のランダムなファイルを移動する」タスクに対する最もコンパクトな入力方法は何でしょうか?

ベストアンサー1

shufとの組み合わせを使用しますxargs( のドキュメントを参照することをお勧めしますman)。

shuf -n 10 -e * | xargs -i mv {} path-to-new-folder

上記のコマンドは、現在のフォルダー(*部分)のランダムなファイル 10 個を選択し、それらを新しいフォルダーに移動します。

アップデート

長くなりましたが、このバージョンの方がさらに理解しやすいかもしれません。

ls | shuf -n 10 | xargs -i mv {} path-to-new-folder

shufは、標準入力のランダムな順列を生成し、結果を 10 個に制限します ( を使用する場合と同様ですheadが、おそらくより高速です)。

おすすめ記事