「xargs」コマンドは、標準入力やファイルからリストを読み込んだ際に、その結果を別のコマンドラインで実行するコマンドとなります。
コマンドの出力を「|」パイプでxargsコマンドを実行し、別のコマンドの引数として指定する使い方ができます。
以下の例では、「ls」コマンドで出力したテキストファイルを「xargs」コマンドを使用し、削除した例となります。
$ ls *.txt test01.txt test02.txt $ $ ls *.txt | xargs rm $ ls *.txt $
「xargs」コマンドの使い方(Linux)
「xargs」コマンドを使用し、実行してみます。
コマンドに与えられる引数の最大の数を制限したり、引数の数が多すぎる場合に自動的に分割して実行することも可能です。
以下では「kyushu」というファイルに記載されている文字列を出力しています。
$ cat kyushu fukuoka saga nagasaki kumamoto oita miyazaki kagoshima
こちらのファイルをベースに引数を与えて出力結果を表示していきます。
記述されている文字列を繋げて出力
以下では「xargs」を利用し、ファイルに記載された文字列を繋げて出力しています。
$ cat kyushu | xargs echo fukuoka saga nagasaki kumamoto oita miyazaki kagoshima
文字列が多くなればかなり長くなるので、実際の端末の画面では折り返されますが、実際には一列に繋がって出力されます。
自動的に分割して表示
文字数が多くなると見にくいので、自動的に分割して表示するようにします。
以下では文字列を「3」文字で分割し表示した例となります。
「-n」オプションで引数オプションを利用して実行します。
$ cat kyushu | xargs -n 3 echo fukuoka saga nagasaki kumamoto oita miyazaki kagoshima
「空白」が含まれる文字列の出力
次に以下のように、県名と市町村を合わせた文字を表示させます。
県名と市町村名の間には「空白(スペース)」を入れて一つの文字列として表示します。
$ cat kyushu fukuoka fukuokashi saga sagashi oita oitashi nagasaki nagasakishi kumamoto kumamotoshi miyazaki miyazakishi kagoshima kagoshimashi
上記の文字列を「3」つに分割して表示します。
以下では「-n」オプションで引数の数を3つに制限します。
$ cat kyushu | xargs -n 3 echo fukuoka fukuokashi saga sagashi oita oitashi nagasaki nagasakishi kumamoto kumamotoshi miyazaki miyazakishi kagoshima kagoshimashi
上記のように3つに分割はされますが、「saga」と「sagashi」が一つの文字列ではなく2つに分割されています。
これは、「xargs」コマンドがスペースやタブなどの空白文字と改行文字を引数の区切りとして認識しているため、空白で区切られてしまいます。
改行のみを区切り文字に指定する
文字列を正しく表示するために、「-d」オプションで改行のみを区切り文字に指定します。
改行は「\n」で表現します。
以下ではシングルクォーテーション「’」で「\n」を囲みます。
改行「\n」を一つの文字としてシングルクォーテーションで囲むことで、「\」バックスラッシュをシェルに読み込ませないようにします。
$ cat kyushu | xargs -n 3 -d '\n' echo fukuoka fukuokashi saga sagashi oita oitashi nagasaki nagasakishi kumamoto kumamotoshi miyazaki miyazakishi kagoshima kagoshimashi
もう一つの表示方法は、「\」を「\n」の手前に書く方法となります。
こちらも上記のシングルクォーテーションと同じ働きをします。
$ cat kyushu | xargs -n 3 -d \\n echo fukuoka fukuokashi saga sagashi oita oitashi nagasaki nagasakishi kumamoto kumamotoshi miyazaki miyazakishi kagoshima kagoshimashi
行数を指定して出力する
ファイルのデータの行数を指定して表示するには「-L」オプションが有効です。
以下ではデータの3行づつを出力した結果となります。
$ cat kyushu | xargs -L 3 echo fukuoka fukuokashi saga sagashi oita oitashi nagasaki nagasakishi kumamoto kumamotoshi miyazaki miyazakishi kagoshima kagoshimashi
「xargs」コマンドオプション
「xargs」コマンドのオプションは以下の通りとなります。
$ xargs --help 使用法: xargs [OPTION]... COMMAND [INITIAL-ARGS]... Run COMMAND with arguments INITIAL-ARGS and more arguments read from input. Mandatory and optional arguments to long options are also mandatory or optional for the corresponding short option. -0, --null items are separated by a null, not whitespace; disables quote and backslash processing and logical EOF processing -a, --arg-file=FILE read arguments from FILE, not standard input -d, --delimiter=CHARACTER items in input stream are separated by CHARACTER, not by whitespace; disables quote and backslash processing and logical EOF processing -E END set logical EOF string; if END occurs as a line of input, the rest of the input is ignored (ignored if -0 or -d was specified) -e, --eof[=END] equivalent to -E END if END is specified; otherwise, there is no end-of-file string -I R same as --replace=R -i, --replace[=R] replace R in INITIAL-ARGS with names read from standard input; if R is unspecified, assume {} -L, --max-lines=MAX-LINES use at most MAX-LINES non-blank input lines per command line -l[MAX-LINES] similar to -L but defaults to at most one non- blank input line if MAX-LINES is not specified -n, --max-args=MAX-ARGS use at most MAX-ARGS arguments per command line -P, --max-procs=MAX-PROCS run at most MAX-PROCS processes at a time -p, --interactive prompt before running commands --process-slot-var=VAR set environment variable VAR in child processes -r, --no-run-if-empty if there are no arguments, then do not run COMMAND; if this option is not given, COMMAND will be run at least once -s, --max-chars=MAX-CHARS limit length of command line to MAX-CHARS --show-limits show limits on command-line length -t, --verbose print commands before executing them -x, --exit exit if the size (see -s) is exceeded --help display this help and exit --version output version information and exit バグを発見した場合は <bug-findutils@gnu.org> まで報告してください。
「xargs」コマンドの使い方は以上となります。
エンジニアのオンライン学習
エンジニアにおすすめのオンライン教材比較 | |
ITエンジニアが自宅で学習ができるオンラインスクール比較 | |