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

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

7
xargsおよびvi-「入力は端末からではありません」
php.ini私のシステムには約10個のファイルがあり、あちこちにあり、それらをすばやく参照したいと思っていました。私はこのコマンドを試しました: locate php.ini | xargs vi しかし、vi警告が表示されInput is not from a terminal、コンソールが非常に奇妙になり始めます。その後、を押し:q!て終了viし、sshセッションから切断して再接続して、コンソールが再び正常に動作するようにする必要があります。 私はここで何が起こっているのかをある程度理解していると思います。基本的に、コマンドはvi開始時に完了していないため、コマンドが完了してviいない可能性があり、端末が通常モードであるとは考えていません。 私はそれを修正する方法がわかりません。私はGoogleとunix.stackexchange.comを検索しましたが、運が悪かったです。

5
xargsにバイナリではなくエイリアスを使用させる
CentOS 6.5のBash 4.2: 私~/.bash_profileには、次のようなエイリアスがたくさんあります。 alias grep='grep -n --color=always' これにより、実行時に自動的に色が強調表示され、行番号が印刷されますgrep。次を実行すると、強調表示は期待どおりに機能します。 $ grep -Re 'regex_here' *.py しかし、最近これを実行したとき: $ find . -name '*.py' | xargs grep -E 'regex_here' 結果は強調表示されず、行番号も出力されなかったため、強制的に戻っ-n --color=alwaysてgrepコマンドに明示的に追加する必要がありました。 んxargsな環境でのエイリアスを読んでいませんか? そうでない場合、それを行う方法はありますか?
13 bash  alias  xargs 

5
特定の文字列に一致する履歴のコマンドを削除するにはどうすればよいですか?
文字列に一致する履歴内のすべてのコマンドを削除する必要があります。私はもう試した: $ history | grep searchstring | cut -d" " -f2 | history -d -bash: history: -d: option requires an argument $ history | grep searchstring | cut -d" " -f2 | xargs history -d xargs: history: No such file or directory $ temparg() { while read i; do "$@" …

9
stdinを並列プロセスに拡散する
stdin上のファイルのリストを処理するタスクがあります。プログラムの起動時間はかなり長く、各ファイルにかかる時間は大きく異なります。これらのプロセスを相当数生成し、ビジーでないプロセスに作業をディスパッチします。私が望んでいることをほとんど実行するいくつかの異なるコマンドラインツールがありますが、私はそれを2つのほぼ機能するオプションに絞り込みました: find . -type f | split -n r/24 -u --filter="myjob" find . -type f | parallel --pipe -u -l 1 myjob 問題はsplit、純粋なラウンドロビンを実行するため、プロセスの1つが遅れて残り、操作全体の完了が遅れることです。一方parallel、入力のN行またはバイトごとに1つのプロセスを生成したいので、起動時のオーバーヘッドに多くの時間を費やすことになります。 プロセスを再利用し、標準化されていない標準化されたプロセスにフィードラインを供給するこのようなものはありますか?


4
`wc -l`で1行の合計を取得するにはどうすればよいですか?
履歴内の特定のファイルの行数を示すためにgitエイリアスを追加しました: [alias] lines = !lc() { git ls-files -z ${1} | xargs -0 wc -l; }; lc ただし、wc -l複数の合計を報告しているため、10万行を超える行がある場合は、それらの合計を報告してから先に進みます。次に例を示します。 <100k行(望ましい出力) $ git lines \*.xslt 46 packages/NUnit-2.5.10.11092/doc/files/Summary.xslt 232 packages/NUnit-2.5.10.11092/samples/csharp/_UpgradeReport_Files/UpgradeReport.xslt 278 total > 100k行(にパイプする必要がありましたgrep "total") $ git lines \*.cs | grep "total" 123569 total 107700 total 134796 total 111411 total 44600 total …
12 files  xargs  wc 

2
xargsを使用して複数のパターンをgrepする
grepする用語が含まれるファイルがあり、各用語はファイル内の1行です。私はこれをxargsでできると考えていました。このようなmanページの例から収集できるもの find ./work -print0 | xargs -0 rm xargsはpre-pipeコマンドの出力を引数の最後に追加するということです。したがって、検索結果が返された場合、report.docxargsはを構築しrm report.docます。この理解は正しいですか? したがって、ファイルの値をgrepコマンドの中央に配置するため、プレースホルダーを指定する必要があります。遊んで、試してみました{}が、うまくいきませんでした: $> cat strings.txt | xargs grep {} subdirectory/* grep: string1: No such file or directory grep: string2: No such file or directory xargsは適切なツールですか?もしそうなら、構文は何ですか?
12 grep  xargs 

10
シェルスクリプトを使用して文字列からすべての重複する単語を削除する
私は次のような文字列を持っています "aaa,aaa,aaa,bbb,bbb,ccc,bbb,ccc" 文字列から重複する単語を削除したい場合、出力は次のようになります "aaa,bbb,ccc" 私はこのコードソースを試しました $ echo "zebra ant spider spider ant zebra ant" | xargs -n1 | sort -u | xargs 同じ値で正常に動作していますが、変数値を指定すると、重複する単語もすべて表示されます。 重複する値を削除するにはどうすればよいですか。 更新 私の質問は、ユーザーが同じ場合、対応するすべての値を単一の文字列に追加することです。このようなデータがあります-> user name | colour AAA | red AAA | black BBB | red BBB | blue AAA | blue AAA | red CCC | …

1
xargs -Iオプション
xargsのマニュアルは言います: -I replace-str --replace [= replace-str] -i [replace-str] 初期引数のreplace-strを、標準入力から読み取った名前に置き換えます。 私はこの部分を理解していません: with names read from standard input. たとえば、何が起こっているのか: find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo | wc -l 上記のコードは、ディレクトリ内のファイル/ディレクトリの総数をカウントします。 誰かがこれを私に説明できますか?
12 xargs 


3
異なる引数でコマンドを繰り返し実行するにはどうすればよいですか?
私はUbuntuにいます。(改行で区切られた)いくつかの引数をコピーし、xselを使用して次のように出力できます $ xsel arg1 arg2 arg3 arg4 ... ここで、これらの各引数を別のコマンドに使用して、引数の数だけそのコマンドを実行したいと思います。 だから私は試した $ xsel | mycommand "constantArgument" $1 ただし、これmycommandは最初の引数に対してのみ実行されました。すべての引数に対してどのように実行できますか?

2
多数のXMLファイルの再フォーマット
ネストされたディレクトリ構造全体に散在する多数のXMLファイルを操作しています。 私は以下を試しました: $ find . -name "*.xml" -type f | xargs -- xmllint --format 問題は、フォーマットされたXML出力を画面に生成しますが、ファイルを変更しないことです。 このコマンドを変更して、実際のファイルの内容を変更するにはどうすればよいですか?
11 find  xargs  xml 

5
見つける| xargs shasumがチェックサムファイル自体のチェックサムを(時期尚早に)作成し、チェック時に失敗する
私の問題(を使用したスクリプト内#!/bin/sh)は次のとおりです。アーカイブのために、ディレクトリ内のすべてのファイルをチェックサムしようとします。すべてのファイル名を含むチェックサム(私の場合はsha1)ファイルは、同じディレクトリに存在する必要があります。~/testファイルf1とf2:を含むディレクトリがあるとします。 mkdir ~/test cd ~/test echo "hello" > f1 echo "world" > f2 今チェックサムを計算します find -maxdepth 1 -type f -printf '%P\n' | xargs shasum まさに私が望むことをします、それは現在のディレクトリのすべてのファイルのみをリストし、sha1合計を計算します(maxdepthは後で変更されるかもしれません)。STDOUTの出力は次のとおりです。 f572d396fae9206628714fb2ce00f72e94f2258f f1 9591818c07e900db7e1e0bc4b884c945e6a61b24 f2 残念ながら、これをファイルに保存しようとすると find -maxdepth 1 -type f -printf '%P\n' | xargs shasum > sums.sha1 結果のファイルには、それ自体のチェックサムが表示されます。 da39a3ee5e6b4b0d3255bfef95601890afd80709 sums.sha1 f572d396fae9206628714fb2ce00f72e94f2258f f1 9591818c07e900db7e1e0bc4b884c945e6a61b24 f2 shasum …
10 find  xargs  checksum  hashsum 

6
名前にスペースが含まれているファイルを削除する
名前にスペースが含まれているすべてのファイルを削除しようとしています。次のコマンドを使用しています。しかし、それは私にエラーを与えています コマンド: ls | egrep '. ' | xargs rm ls | egrep '. 'コマンドのみを使用している場合、ファイル名にスペースを含むすべてのファイル名が表示されます。しかし、出力をrmに渡そうとすると、すべてのスペース(先頭または末尾)が削除されます。だから私のコマンドは正しく実行されていません。 名前に少なくとも1つのスペースがあるファイルを削除する方法についてのポインタはありますか?
10 shell  quoting  rm  xargs 

4
xargsの出力のフォーマット
出力xargsディスプレイのフォーマットを変更したい cat k.txt 1 2 3 そして cat k.txt | xargs 1 2 3 しかし、私は持っていると思います1, 2, 3か1|2|3。助言がありますか?
10 xargs 

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