問題タブ [xargs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - xargs を使用して、名前にスペースと引用符が含まれるファイルをコピーするにはどうすればよいですか?
ディレクトリの下に一連のファイルをコピーしようとしていますが、多くのファイルの名前にスペースと単一引用符が含まれています。find
とをgrep
一緒に文字列にしようとするとxargs
、次のエラーが発生します。
xargs をより堅牢に使用するための提案はありますか?
これは、BSD を使用したMac OS X 10.5.3 (Leopard)上にありxargs
ます。
xargs - 入力行ごとに xargs にコマンドを 1 回実行させる
指定された入力行ごとにxargsにコマンドを1回だけ実行させるにはどうすればよいですか? デフォルトの動作は、行をチャンクしてコマンドを 1 回実行し、複数の行を各インスタンスに渡すことです。
http://en.wikipedia.org/wiki/Xargsから:
/path -type f -print0 | を見つけます。xargs -0 rm
この例では、find は xargs の入力にファイル名の長いリストをフィードします。xargs は、このリストをサブリストに分割し、サブリストごとに rm を 1 回呼び出します。これは、この機能的に同等のバージョンよりも効率的です。
find /path -type f -exec rm '{}' \;
find に「exec」フラグがあることは知っています。別のリソースから実例を引用しているだけです。
command-line - xargs が bash エイリアスを認識しない
次のコマンドを実行しようとしています。
ここで、「foobar」は、.bashrc ファイルで定義されたエイリアスまたは関数です (私の場合、1 つのパラメーターを受け取る関数です)。どうやら xargs はこれらを実行できるものとして認識していません。これを改善する賢い方法はありますか?
bash - スクリプトの出力をスタンドアロンのbashコマンドとして実行する
以下をstdoutに出力するperlスクリプト「foobar.pl」があるとします。
そして、そのperlスクリプトがスタンドアロンのbashコマンドとして出力するものをすべて実行したい(これは信頼できる環境で実行されているので、セキュリティの問題について心配する必要はありません)。
これをスタンドアロンコマンドとしてbashに認識させるにはどうすればよいですか?
xargsを使用してみましたが、事前定義されたコマンドにのみ引数を渡したいようです。
perlスクリプトが任意のコマンドを出力できるようにしたいと思います。
上記は、既存のcygwin環境で実行したいので機能しません...
bashが新しいプロセスを実行しているようであり、bash_profileからの初期化と設定がインスタンス化されないため、上記は機能しません。
linux - 一連のファイルの名前変更
Linux サーバー上の一連のファイルの名前を変更しようとしています。必要なファイルを見つけるのは簡単です。
もちろん、mbox ファイルであるため、名前にスペースが含まれているものもあるため、次のようになります。
ファイルの名前を変更できるように、xargs にパイプしています。
INBOX.mbox を指定すると、エコーは INBOX のようなものを返すはずですが、bash は次のように文句を言います。
どうすればこれを修正できますか? 可能であれば、それを find/xargs ソリューションに保持して、その周りに多くのループ構造を追加しないようにしたいと思います。
command-line - `xargs -t` 出力は stderr または stdout ですか? また、それを制御できますか?
hi.txt と blah.txt を含むディレクトリがあり、Linux っぽいコマンド ラインで次のコマンドを実行するとします。
ls *.* | xargs -t -i{} echo {}
あなたが見る出力は
stderr の出力をリダイレクトして (「echo blah.txt」が失敗するなど)、xargs -t コマンドからの出力のみを std out に出力したいのですが、それも stderr のように見えます。
ls *.* | xargs -t -i{} echo {} 2> /dev/null
stdout に出力するように制御する方法はありますか?
bash - xargs コマンドで > を使用するには?
ディレクトリ内のすべてのファイルを grep し、その grep の出力を別のファイルに書き込むことができる bash コマンドを見つけたいと考えています。私の推測では、このようなことをすることでした
しかし、私の知る限り、xargs は二重引用符が好きではありません。ただし、二重引用符を削除すると、コマンドはコマンド全体の出力を、一連の個々のファイルではなく、'{}'.out という単一のファイルにリダイレクトします。
xargs を使用してこれを行う方法を知っている人はいますか? このgrepシナリオを例として使用して、xargsに関する問題を説明しただけなので、xargsを使用しないソリューションは私には当てはまりません。
linux - xargs でエイリアス化されたコマンドを使用するにはどうすればよいですか?
.aliases に次のエイリアスがあります。
名前foo
に文字列が含まれるすべてのファイルで、大文字と小文字を区別せずに検索したいと思います。bar
これは私が得るものです:
xargs でエイリアスを使用する方法はありますか、それともフル バージョンを使用する必要がありますか。
注: これは簡単な例です。その上gi
、手動で簡単に拡張できないかなり複雑なエイリアスがいくつかあります。
編集: を使用tcsh
したので、回答がシェル固有のものかどうかを指定してください。
shell - 'find-exec'または'find|のどちらが速いか xargs -0'?
私のWebアプリケーションでは、PHPスクリプトを使用してページをレンダリングし、それらから静的HTMLファイルを生成します。静的HTMLは、パフォーマンスを高速化するためにユーザーに提供されます。HTMLファイルは最終的に古くなり、削除する必要があります。
私は、立ち退きスクリプトを書く2つの方法の間で議論しています。
1つ目は、次のような単一の検索コマンドを使用することです。
2番目の形式は、xargsを介してパイプすることです。
rm
最初のフォームは、見つかったファイルごとに呼び出しますが、2番目のフォームは、すべてのファイル名を1つに送信するだけですrm
(ただし、ファイルリストは非常に長い場合があります)。
どちらの形式が速いでしょうか?
私の場合、キャッシュディレクトリはいくつかのWebサーバー間で共有されているため、この問題が問題になる場合は、これはすべてNFSを介して行われます。
shell - xargs をよりよく理解するために
Rampion のコードxargs man
での の使用を理解したい:
Rampion のおかげで、猫は必要ありません!
なぜxargs
コマンドで必要なのですか?
-の部分は次のように理解してxargs
います
- xargsに何も猫
- xargs は man コマンドのリストを作成します
xargs がコマンドのリストを作成するという考えがありました。例えば、
コマンドのリストと同じです: