xargs -I オプション

xargs -I オプション

これxargs マニュアル説明する:

-I置換-str
--replace[=replace-str]
-i[replace-str]
初期引数の置換-strエントリを標準入力から読み取った名前に置き換えます。

この部分は理解できません。with names read from standard input.

たとえば、次のようになります。

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo | wc -l

上記のコードは、ディレクトリ内のファイル/ディレクトリの総数を計算します。

誰かが私にこれを説明できますか?

ベストアンサー1

「標準入力から読み取った名前を使用する」とは、xargs標準入力から渡されたデータを取得して分割し、それを使用して引数で指定されたコマンドを実行することを意味します。デフォルトでは空白や改行に分割され、echo一度にできるだけ多くの引数で実行されます。

-0例のオプションは、xargs入力を空白や改行ではなく null バイトに分割するように指示します。スペースや改行文字を含むファイル名を正しく処理するためにfindsで使用されます。-print0

この-Iオプションは、新しいコマンドラインの作成方法を変更します。一度に必要なだけパラメータを追加する代わりに、入力から名前をxargs一度に1つずつ取得し、指定されたトークン({}ここ)を見つけてその名前に変更します。

あなたの例で{}は与えられたコマンドテンプレートには存在しないので、xargs実際には与えられた各ファイル名に対して引数なしで一度実行するようにxargs指示されます。このコンテンツを表示するには、以下を削除してください。echofindwc

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo

一連の空白行が表示されます。これを以下と組み合わせます。

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0I{} echo {}

そして

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0 echo

そして

find . -mindepth 1 -maxdepth 1 -print0 | xargs -0

より良い理解を得るために。

おすすめ記事