タグ付けされた質問 「xargs」

xargsは別のコマンドを実行し、標準入力からその引数を生成するコマンドです

1
bashでnull区切りの入力で「head」と「tail」を行う方法は?
findコマンドは、ファイル名をヌル区切りの文字列(指定されている場合-print0)として出力xargsし、-0オプションをオンにしてそれらを使用できます。しかし、その間に、そのファイルのコレクションを操作するのは難しいです- sortコマンドには-zスイッチがあり、それによりそれらのファイルを並べ替えることができますがhead、tail持っていません。 どのようにして行うことができますheadし、tail便利な方法でそれらのヌル区切り入力に?(私はいつでも短くて遅いルビースクリプトを作成できますが、もっと良い方法があるといいのですが)

3
「引数リストが長すぎます」:コマンドを変更せずにどのように処理しますか?
のようなコマンドを実行するとls */*/*/*/*.jpg、エラーが発生します -bash: /bin/ls: Argument list too long これが起こる理由はわかっています。それは、コマンドへの引数のためのスペースの量にカーネルの制限があるためです。標準的なアドバイスは、使用するコマンドを変更して、引数に非常に多くのスペースを必要としないようにすることです(たとえば、findandを使用xargs)。 コマンドを変更したくない場合はどうすればよいですか?同じコマンドを使い続けたい場合はどうすればよいですか?このエラーを取得せずに、「機能する」ようにするにはどうすればよいですか?どのソリューションが利用可能ですか?

2
xargs:複数のコマンドで同じ引数を使用
df -hパーティションの1つが(ほぼ)スペース不足になったときに出力をプローブして警告できるワンライナーを作成しようとしています。xargsを使用している部分が、今私を尻に蹴りつけています... echo 95 | xargs -n1 -I{} [ {} -ge 95 ] && echo "No Space on disk {}% full -- remove old backups please" 2番目の{}も「95」と表示するにはどうすればよいですか?

2
xargsが複数のプロセスからの出力をうまくマージしないようにする方法は?
xargsオプションで使用しています--max-args=0(または-P 0)。 ただし、プロセスの出力は、stdout適切な行分離を考慮せずにストリームにマージされます。だから私はしばしば次のような行になります: <start-of-line-1><line-2><end-of-line-1> パターン全体で出力全体を使用egrepし^ているので、xargsこれは結果を台無しにします。 xargsプロセス出力を順番に(1つのプロセスの出力が連続している限り、任意の順序で)強制的に書き込む方法はありますか? または他の解決策はありますか? 編集:ユースケースの詳細: さまざまなホストからWebページをダウンロードして解析したい。すべてのページの読み込みに約1秒かかり、リクエストを並列化する必要があるページが数十個あるため。 私のコマンドの形式は次のとおりです。 echo -n $IPs | xargs --max-args=1 -I {} --delimiter ' ' --max-procs=0 \ wget -q -O- http://{}/somepage.html | egrep --count '^string' ホストIP($ IPs変数)およびその他のデータは含まれているbashファイルから取得されるため、Perlのようなものではなくbashを使用します。

6
xargsがapt-getを中止させるのはなぜですか?
ファイルからパッケージのリストを削除しようとしています。私は次のコマンドを使用しています: cat packages | xargs sudo apt-get remove packages削除したいパッケージのリストを含むファイルです。すべてが機能しているように見えapt-getますが、「はい」または「いいえ」を選択させる代わりに中断します。 私は-yオプションでこれを回避できることを知っていますが、なぜこれが起こっているのか、どのようにインタラクティブな選択を保つことができるのか知りたいです。
17 apt  xargs 

2
xargsを実行して、生成しないコマンドラインを実行せずに表示するにはどうすればよいですか?
かなりの数のLinuxコマンドには、実行せずに実行する内容を示すドライランオプションがあります。それを行うxargsのマニュアルページには何もありませんし、エミュレートする明白な方法もありません。 (私の特定のユースケースは長いパイプラインのトラブルシューティングですが、他にもあると確信しています) 何か不足していますか?
17 xargs 

3
xargsを介して複数のパラメーターを渡す
xargsコマンドのさまざまな部分で複数のパラメーターを実行できるようにしたいのですが。 たとえば、次のとおりです。 echo {1..8} | xargs -n2 | xargs -I v1 -I v2 echo the number v1 comes before v2 それが戻ることを願っています the number 1 comes before 2 the number 3 comes before 4 ...など これは達成可能ですか?私の複数回の使用-Iは正しくないと思われます。
17 xargs 

3
bashはxargs grepを1回だけ検索します
多分それは少し奇妙です-そして多分これを行うための他のツールがありますが、まあ.. 次の古典的なbashコマンドを使用して、文字列を含むすべてのファイルを検索しています。 find . -type f | xargs grep "something" 複数の深さで、非常に多くのファイルがあります。「何か」が最初に現れるだけで十分ですが、findは検索を続け、残りのファイルを完了するのに長い時間がかかります。私がやりたいのは、grepから検索への「フィードバック」のようなもので、findが他のファイルの検索を停止できるようにすることです。そのようなことは可能ですか?
16 bash  find  grep  xargs 

1
xargsで定義済み関数を使用する方法
これは私のコードです #!/bin/bash showword() { echo $1 } echo This is a sample message | xargs -d' ' -t -n1 -P2 showword したがって、関数showwordにパラメーターとして渡す文字列をエコーする関数があります。 次にxargs、関数を呼び出して一度に1つの単語を関数に渡し、関数の2つのコピーを並行して実行しようとしています。動作してxargsいないのは、機能を認識しないことです。私がやろうとしていることをどのように達成できますshowwordか、xargsを関数で動作させるにはどうすればよいですか?
16 bash  xargs  function 

2
パイプでxargsを使用する方法はありますか?
フォルダーに移動したflacファイルを別のフォルダーのmp3に自動的に変換しようとしています。 私の現在のコード行はこれです: inotifywait -m -r -q -e moved_to --format "'%w%f'" ~/test | xargs -I x flac -cd x - | lame -b 320 - /media/1tb/x.mp3 これまでの動作を説明するために、inotifywaitは、そこに移動したファイルを〜/ testで再帰的に監視し、パスとファイル名をパイプに出力します。xargsはその名前を使用して適切なflacコマンドを作成し、xをファイル名に置き換え、ファイルを別のパイプにデコードします。新しいパイプでは、lameはflacの出力を/ mediaの下のmp3に処理します。xargsにパイプを介して何らかの方法で到達して、lameコマンドのxを置き換えるか、何らかの方法で両方のコマンドがアクセスできる変数に送信するか、何かが欲しい。名前付きパイプとそのジャズをいじってみましたが、2つのコマンド間でパイプ処理される実際のデータがあるという事実に頭を悩ませています。
15 shell  pipe  xargs  inotify 


3
xargsで引数を引用する方法
1 MBを超えるフォルダー内のすべてのファイルを削除するとします。 $ find . -size +1M | xargs -0 rm これにより、名前にスペースが含まれるファイルは削除されません。だから私はそれが送信するすべての引数を引用したいrm。場合はfind、それを与えるSome report.docxことは渡す必要があります"Some report.docx"しrm。 どうやってやるの?
15 shell  find  quoting  rm  xargs 

2
このxargsコマンドが機能しないのはなぜですか?
すべての.sh拡張子を削除したかったので、次のようにしました。 ls *.sh | xargs -I {} mv {} `basename {} .sh` ただし、機能しませんが、basename変更されていないファイル名を返すように動作します。 なぜそのように振る舞うのですか? たとえば、これは機能します: ls *.sh | xargs -I {} echo `basename {}.jpg .jpg`; 編集: 解決策:単一引用符は`basename ...`、コマンドが実行される前にシェルによる評価を防ぎます。 ls *.sh | xargs -I {} sh -c 'mv {} `basename {} .sh`'

2
xargsに何もパイプしない
状況によっては標準出力に何もないスクリプトがあります。スクリプトの最後に、xargsを使用して別のコマンドに行を渡します。私の問題は、stdoutに何もないとき、典型的な「使用法:プログラムarg1 arg2」エラーメッセージが表示されることです。 どうすればこれを回避できますか?
14 bash  xargs 

1
xargs「並列プロセッサ」のインデックスを取得するにはどうすればよいですか?
私は2つのリソース、という名前があると0し、1唯一の排他的にアクセスすることができ、。 xargs無料の相互排除サービスとして使用するために起動する「並列プロセッサ」の「インデックス」を回復する方法はありますか?たとえば、次の並列化された計算を検討してください。 $ echo {1..8} | xargs -d " " -P 2 -I {} echo "consuming task {}" consuming task 1 consuming task 2 consuming task 3 consuming task 4 consuming task 5 consuming task 6 consuming task 7 consuming task 8 私の質問はindex、出力が次のようになるような魔法の単語があるかどうかです $ echo {1..8} | xargs -d " …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.