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

Unixライクなオペレーティングシステムのユーティリティで、少数の引数しか取ることができないプログラムに多数の引数を渡す


2
なぜxargsが必要なのですか?
「notes.txt」という名前のファイルを除くディレクトリ内のすべてのファイルを削除するとします。これをパイプラインで行いls | grep -v "notes.txt" | xargs rmます。2番目のパイプの出力がrmが使用すべき入力である場合、なぜxargsが必要なのですか? 比較のために、パイプラインは、echo "#include <knowledge.h>" | cat > foo.cxargsを使用せずにエコーされたテキストをファイルに挿入します。これら2つのパイプラインの違いは何ですか?
25 bash  pipe  xargs  coreutils 


4
OSXのxargs -dの置き換え
Linuxでは、次のように連続した名前の4つの異なるサーバーに対してコマンドxargs -d,をすばやく実行できhostnameます。 echo -n 1,2,3,4 |xargs -d, -I{} ssh root@www{}.example.com hostname OSX xargsコマンドはdelimiterパラメーターをサポートしていないようです。異なる形式のecho、または他のコマンドラインユーティリティを使用して同じ結果を達成できますか?
22 macos  xargs 



8
xargsで2つのパラメーターを一度に使用するにはどうすればよいですか?
ビデオを変換する必要がありますが、どこにあるのかわかりませんfind。どのように私はした結果、出力ファイル名を付けることができFFmpegのとxargs? このコマンドを使用して2つのパラメーターを作成できることがすでにわかっています。 find . -iname "*.mov" -printf "%p %f\n" xargsマニュアルに関連するものが見つかりません。私はこのようなものが欲しい: find . -iname "*.mov" -printf "%p %f\n" | xargs ffmpeg -i {param1} -f flv {param2} これどうやってするの?


5
ディレクトリ内の1,000万を超えるファイルでsedを実行する方法は?
10144911ファイルがあるディレクトリがあります。これまでのところ、次のことを試しました。 for f in ls; do sed -i -e 's/blah/blee/g' $f; done シェルがクラッシュしlsました。チルダになっていますが、どのように作成するかわかりません。 ls | xargs -0 sed -i -e 's/blah/blee/g' 引数が多すぎます sed find . -name "*.txt" -exec sed -i -e 's/blah/blee/g' {} \; これ以上メモリをフォークできませんでした この親切なコマンドを作成する方法に関する他のアイデアはありますか?ファイルは互いに通信する必要はありません。ls | wc -l動作しているように見える(非常に遅い)ので、可能に違いない。
16 bash  find  xargs 

1
xargs -I replace-strオプションの違い
私の理解では、以下はまったく同じ意味です。 ls -1 | xargs file {} ls -1 | xargs -I{} file {} -Iオプションが指定されていない場合、デフォルトは-I {}です。 現在のディレクトリ内のすべてのファイルを一覧表示し、fileそれぞれに対してコマンドを実行します。名前にスペースが含まれているものもあります。しかし、違いに気づきました。下記参照: $ ls -1 Hello World $ ls -1 | xargs file {} {}: ERROR: cannot open `{}' (No such file or directory) Hello: ERROR: cannot open `Hello' (No such file or directory) World: …
16 bash  xargs 


4
-exec vs xargs(別名「find | xargs basename」が壊れるのはなぜですか?)
特定の種類のすべてのファイルをサブディレクトリに広げようとしていましたが、私の目的のために必要なのはファイル名だけでした。パスコンポーネントを削除してみました basenameしかし、それは動作しませんでした xargs: $ find . -name '*.deb' -print | xargs basename basename: extra operand `./pool/main/a/aalib/libaa1_1.4p5-37+b1_i386.deb' Try `basename --help' for more information. 私はこれらのバリエーションのどちらでも同じこと(全く同じエラー)を得ます: $ find . -name '*.deb' -print0 | xargs -0 basename $ find . -name '*.deb' -print | xargs basename {} 一方、これは期待どおりに機能します。 $ find . -name '*.deb' -exec …
10 command-line  find  gnu  xargs 

2
xargs --replace / -I(単一の引数の場合)
xargsを使用して、指定された各引数に対してコマンドを実行しようとしていますが、残念ながら、-nと組み合わせた場合、-replace / -Iフラグは正しく機能しないようです。-nオプションに関係なく、{}はstdinから読み取られた引数の完全なリストに展開されるようです。 残念ながら、ウェブ上のすべての例は、{}が展開されている場合に複数の引数をとるコマンド(mv、cp、rm)用のものであるようです。 たとえば、実行時: echo a b c d | xargs -n 1 -I {} echo derp {} 出力は次のとおりです。 derp a b c d しかし、私は期待しました: derp a derp b derp c derp d ただし、-I {}なしで実行すると、予期した結果が得られます。 echo a b c d | xargs -n 1 echo derp derp a derp …


2
XargsとWgetが1時間後に動作を停止する
デュアルコアと4GB RAMを搭載したWindows XPでCygwinを使用してスクリプトを実行する cat url_list.txt | xargs -P50 wget -i 4GBのURLをダウンロードしてダウンロードしようとしています(約4300万) 最初の1時間は問題なく動作しますが、URLリスト全体で2%しかありませんが、Bashシェルとダウンロードは停止します。 何が間違っているのかについてのアイデアはありますか? これが1時間後に停止する理由をデバッグする最良の方法は何ですか?
8 wget  url  xargs  cat 

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