はじめに
特定のLinuxコマンドは、標準入力(stdin)とコマンドライン引数の両方から入力を受け取ります。ただし、入力を引数としてのみ受け取るように設計されているものもあります。標準入力を処理できるようにするには、これらのLinuxコマンドで xargsを利用する必要があります。 コマンド。
このチュートリアルでは、Linuxのxargsの使用方法を学習します。 標準入力を操作し、他のコマンドを操作するコマンド。
前提条件
- Linuxを実行しているシステム
- コマンドラインへのアクセス
xargsコマンドとは何ですか?
xargs commandは、標準入力を通じて提供されるコマンドを作成して実行します。入力を受け取り、それを別のコマンドのコマンド引数に変換します。この機能は、 xargsのファイル管理で特に役立ちます。 rmと組み合わせて使用されます 、 cp 、 mkdir 、および他の同様のコマンド。
例でxargsコマンドを使用する方法
単独で使用する場合は、 xargs ユーザーにテキスト文字列の入力を求め、それを echoに渡します。 コマンド。
この例は、入力例とそれに続く echoの出力を示しています。 コマンド。
xargsとfindを組み合わせる
多くの場合、findコマンドは xargsの前にあります パイプラインで。これを使用して、 xargsでさらに処理するためのファイルのリストを提供します 。構文は次のようになります:
find [location] -name "[search-term]" -type f | xargs [command]
上記の例は、 findの使用を示しています .shを持つすべてのファイルを検索するコマンド 拡大。次に、ファイルのリストが xargsにパイプされます。 、 rmを使用します それらを削除するコマンド。
ただし、 xargs 名前に空白が含まれるファイルは自動的に含まれません。これらのファイルも含めるには、 -print0を使用します findのオプション 、および -0 xargsのオプション :
find [location] -name "[search-term]" -type f -print0 | xargs -0 [command]
rm .shのすべてのファイルを削除するようになりました 拡張機能。
xargsをgrepと組み合わせる
xargsを使用する grepコマンドを使用して、 findによって提供されるファイルのリストから文字列を検索します。 コマンド。
find . -name '[search-term]' | xargs grep '[string-to-find-in-files]'
上記の例では、 .txtを含むすべてのファイルを検索しました 拡張機能とそれらをxargsにパイプしました 、次に grepを実行しました それらに命令します。
Xargsの複数のコマンド
xargsを使用して複数のコマンドを実行するには 、 -Iを使用します オプション。構文は次のとおりです。
[command-providing-input] | xargs -I % sh -c '[command-1] %; [command-2] %'
この例では、 file4.txtの内容 最初に表示されました。次に、 mkdir ファイル内の単語ごとにフォルダを作成しました。
ファイルからアイテムを読み取る
前述のように、 xargs 標準入力を読み取ります。 -aを使用します 代わりにファイルの内容を読み取るオプション。
xargs -a [filename]
tarを使用して画像を検索してアーカイブする
tarコマンドと一緒に使用すると、 xargs tar.gzを作成します アーカイブして、 findによって提供されたファイルを入力します コマンド。
find [location] -name "[search-term]" -type f -print0 | xargs -0 tar -cvzf [tar-gz-archive-name]
印刷コマンド
xargsによって実行されるコマンドを確認するには 標準出力では、 -tを使用します オプション。
[command-providing-input] | xargs -t [command]
上記の例では、 xargsに注意してください。 echoによって提供される文字列全体に対してmkdirコマンドを実行しました 。
xargsコマンドの実行を承認する
いくつかのxargs ファイルやフォルダの削除などの操作は元に戻せません。これらのコマンドの実行を制御するには、 -pを使用します オプション。
[command-providing-input] | xargs -p [command]
-pを使用してコマンドを実行する場合 オプション、 xargs 実行する前に確認行を表示します。 yと入力します 続行するか、 n 操作をキャンセルします。
1行あたりの出力を制限する
引数の数を制御する必要がある場合がありますxargs 同時にかかります。 -nを使用してこのアクションを実行します オプションの後に制限する引数の数が続くxargs 宛先:
[command-providing-input] | xargs -n [number] [command]
以下の例では、 xargs echoから文字列を取得します コマンドを実行し、3つに分割します。次に、別の echoを実行します パーツごとに:
区切り文字を指定する
デフォルトのxargs 区切り文字は空白です。デフォルトの区切り文字を変更するには、 -dを使用します コマンドの後に1文字またはnなどのエスケープ文字が続く (新しい行)。
[command-providing-input] | xargs -d [new-delimiter] | xargs [command]
以下の例では、 xargs コマンドは、システムに *を使用するように指示します 区切り文字としてmkdirを適用します 取得した各引数に。
システム上のすべてのLinuxユーザーアカウントを一覧表示する
xargsを使用する cutなどのコマンドの出力を整理する 。次の例を考えてみましょう:
cut -d: -f1 < /etc/passwd | sort | xargs
cutコマンドは、 /etc/passwdにアクセスします ファイルを作成し、 :を使用します ファイルの各行の先頭をカットする区切り文字。次に、出力は sortにパイプされます 、受信した文字列を並べ替え、最後に xargs それらを表示します:
文字列の空白スペースを削除する
xargs以降 引数を探すときに空白を無視します。このコマンドは、文字列から不要な空白を削除するのに役立ちます。
echo "[string-with-unnecessary-spaces]" | xargs
各ファイルの行/単語/文字のリスト
xargsを使用する wcコマンドを使用して、行、単語、文字数を含むファイルのリストを表示します。
ls | xargs wc
以下の例では、lsコマンドに xargsにパイプするように指示しています。 「example」という単語を含むファイルのみ。 xargs 次に、 wcを適用しました そのリストへ:
ファイルを複数のディレクトリにコピー
xargsを使用してファイルを複数のディレクトリにコピーします 指図。構文は単純です:
echo [directory-1] [directory-2] | xargs -n 1 cp -v [filename]
echo コマンドはディレクトリ名とxargsを提供します cpコマンドを使用して、指定されたファイルを各ディレクトリにコピーします。