GNU/Linux >> Linux の 問題 >  >> Linux

バッチ処理のコマンドに引数として渡すことができるファイルの数をどのように計算しますか?

xargs に計算を任せてください。

printf '%s\0' files/* | xargs -0 mv -t new_files_dir

あなたの質問は、実際には「引数の数の制限」があると想定しているようですが、実際には2つの制限の組み合わせです:

<オール>
  • コマンドライン引数の文字列の長さの合計 and 終了 NUL バイトを含む環境変数

  • 単一のコマンドライン引数の文字列の最大長。

  • たとえば、1 文字の引数が 200000 個、2 文字の引数が 100000 個のコマンドを呼び出すことはできますが、128k バイトを超える単一の引数では呼び出すことができません。

    xargs と仮定すると GNU coreutils から、xargs --show-limits </dev/null システム上のこれらの制限が表示されます。

    どのシステムでも xargs しません コマンド ラインを作成するときにシステムの最大制限を使用しますが、合理的なものを選択します (そのようにシステムに負担をかけることはまったく意味がありません)。


    それが本当に重要な場合は、独自の batch-move を書くことができます Cのプログラム。標準入力としてファイル リストを取得し、関連する Unix システム コールを使用して移動を行います。

    そうでない場合、「限界を見つけてそれまでに作業する」は正確です。 何 xargs(1) (Linux の GNU バージョン、こちら) はそうです。あなたがもっと速くなるなんて、私にはとても思えません.


    Linux
    1. システム管理者(root)としてコマンドを実行する方法は?

    2. ファイルの行をコマンドの引数として使用するにはどうすればよいですか?

    3. Linuxでコマンドの途中でxargsを使用してすべての引数を渡すにはどうすればよいですか

    1. シェル - コマンドのディレクトリを見つける方法は?

    2. 同じ引数で別のコマンドを実行するにはどうすればよいですか?

    3. 「vi」のコマンドラインから行番号が表示されたファイルを開くにはどうすればよいですか?

    1. Linux の find コマンドを使用してファイルを検索する方法

    2. Linuxでxargsを使用してファイルを移動するにはどうすればよいですか?

    3. ARM ベースのシステムで RAM のデータ破損をテストするにはどうすればよいですか?