Argument list too long (引数リストが長すぎます)エラーに xargs で対応する ヽ(`Д´)ノ

Home » メモ帳 » Linux » Argument list too long (引数リストが長すぎます)エラーに xargs で対応する ヽ(`Д´)ノ
Linux コメントはまだありません

Argument list too long (引数リストが長すぎます)エラー

cd /usr/local/nessus/lib/nessus/plugins/
ls | wc -l

11817

とかファイル数の多いディレクトリで、ワイルドカード (*) で grep とかしようものなら、、、

grep 10114 *

-bash: /bin/grep: Argument list too long
-bash: /bin/grep: 引数リストが長すぎます

って bash に怒られますた。

「xargs」を使おう

引数リストが足りないときは、xargs で対応する。

ls | xargs grep 10114

grep: MD5: Permission denied
icmp_timestamp.nasl: script_id(10114);

ちゃんと実行できた。(grep: MD5: Permission denied はただ Read 権がないだけ)

マニュアル(日本語)

XARGS(1L)                                                           XARGS(1L)



名前
xargs - 標準入力からコマンドラインを作成し、それを実行する

書式
xargs [-0prtx] [-e[eof-str]] [-i[replace-str]] [-l[max-lines]] [-n
max-args] [-s max-chars] [-P max-procs] [--null] [--eof[=eof-str]]
[--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive]
[--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs]
[--max-args=max-args] [--no-run-if-empty] [--version] [--help] [com-
mand [initial-arguments]]

説明
このマニュアルページは GNU 版 xargs に関して記述したものである。 xargs
はまず標準入力から空白または改行で区切られた文字列群を読み込む (空白は
ダブルクォーテーション・シングルクォーテーション・バックスラッシュによ
っ てプロテクトできる)。そして command (デフォルトは /bin/echo) に文字
列群を続けたコマンドラインを実行する。 initial-arguments が指定され て
いれば、 command と標準入力から渡された文字列の間に、 command への引き
数として渡される。標準入力の空行は無視される。

xargs が終了するときの戻り値は以下の通り。

0 成功
123 command 実行のいずれかにおいて、 1-125 の戻り値が返った。
124 command が 255 を戻り値として返した。
125 command がシグナルによって kill された。
126 command が実行できない。
127 command が見つからない。
1 他のエラーが起こった。

オプション
--null, -0
標準入力からの文字列の区切りに、空白ではなくヌル文字が使われ て
い るとみなす。また引用符やバックスラッシュに特別の意味を持たせ
ず、すべての文字をそのまま用いる。ファイル終了文字列も無効と な
り 、他の文字列と同じように扱われる。入力される文字列に空白・引
用符・バックスラッシュが含まれている場合に有用であろ う 。 GNU
find の -print0 オプションの出力を、このオプションを指定した
xargs の入力とすると良い。

--eof[=eof-str], -e[eof-str]
ファイル終了文字列を eof-str に設定する。入力にこのファイル終了
文字列が現れると残りの入力は無視される。 eof-str が省略された場
合、ファイル終了文字列は設定されない。このオプションが与えら れ
なかった場合は、デフォルトのファイル終了文字列は "_" となる。

--help xargs の利用法に関するまとめを表示して終了する。

--replace[=replace-str], -i[replace-str]
initial arguments の中の replace-str を、標準入力から読んだ名前
で置き換える。クォートされていない空白文字を文字列の区切りと み
なさない。 replace-str が省略された場合は、 "{}" がデフォルトの
置換文字となる (‘find -exec’ と同様)。自動的に -x と -l 1 が 同
時に指定されたことになる。

--max-lines[=max-lines], -l[max-lines]
コマンドラインあたり最大 max-lines の入力行 (空行以外) を用いる
。省略された場合のデフォルトは 1。入力行が空白文字で終ってい る
場 合には、次の行に継続しているとみなされる。自動的に -x が同時
に指定されたことになる。

--max-args=max-args, -n max-args
コマンドラインあたり最大 max-args 個の文字列が用いられる。も し
サ イ ズが超過した場合には (-s オプションの項を見よ)、 max-args
以下の文字列が用いられることになる。ただしこれは -x オプショ ン
が指定されていない場合で、指定されている場合には xargs 自身が実
行を終了する。

--interactive, -p
コマンドライン毎に、実行するかどうかをユーザーにたずねるプロ ン
プ トを出し、端末から一行読み込む。返答が ‘y’ または ‘Y’ で始ま
っていた場合のみ、そのコマンドラインを実行する。自動的に -t が
同時に指定されたことになる。

--no-run-if-empty, -r
標 準入力に空行しか含まれていない場合、コマンドを実行しない。通
常は入力がない場合でもコマンドは一回実行される。

--max-chars=max-chars, -s max-chars
コマンドライン当たりに指定できる最大の文字数を max-chars に設定
す る。文字数にはコマンドと initial arguments、コマンドライン文
字列の最後を示すヌル文字も含まれる。デフォルトは 20 x 1024 文字
もしくはシステムで可能な最大値。

--verbose, -t
実行する前に、コマンドラインを標準エラー出力に表示する。

--version
xargs のバージョンを表示して終了する。

--exit, -x
サイズが超過した場合 (-s オプションの項を見よ) 終了する。

--max-procs=max-procs, -P max-procs
一時に実行するプロセスの最大数を max-procs に設定する。デフォル
トは 1。もし max-procs が 0 の場合は、 xargs は可能な限り多くの
プ ロセスを実行しようとする。 -n オプションは -P といっしょに用
いるようにすること。さもないと一回の実行しか行われない場合が あ
る。

関連項目
find(1L), locate(1L), locatedb(5L), updatedb(1L)
Finding Files (on-line in Info, or printed)




XARGS(1L)

マニュアル(英語)

XARGS(1L)                                                           XARGS(1L)



NAME
xargs - build and execute command lines from standard input

SYNOPSIS
xargs [-0prtx] [-E eof-str] [-e[eof-str]] [-I replace-str]
[-i[replace-str]] [-L max-lines] [-l[max-lines]] [-n max-args] [-s
max-chars] [-P max-procs] [--null] [--eof[=eof-str]]
[--replace[=replace-str]] [--max-lines[=max-lines]] [--interactive]
[--max-chars=max-chars] [--verbose] [--exit] [--max-procs=max-procs]
[--max-args=max-args] [--no-run-if-empty] [--version] [--help] [com-
mand [initial-arguments]]

DESCRIPTION
This manual page documents the GNU version of xargs. xargs reads
arguments from the standard input, delimited by blanks (which can be
protected with double or single quotes or a backslash) or newlines,
and executes the command (default is /bin/echo) one or more times with
any initial-arguments followed by arguments read from standard input.
Blank lines on the standard input are ignored.

xargs exits with the following status:
0 if it succeeds
123 if any invocation of the command exited with status 1-125
124 if the command exited with status 255
125 if the command is killed by a signal
126 if the command cannot be run
127 if the command is not found
1 if some other error occurred.

OPTIONS
--null, -0
Input filenames are terminated by a null character instead of
by whitespace, and the quotes and backslash are not special
(every character is taken literally). Disables the end of file
string, which is treated like any other argument. Useful when
arguments might contain white space, quote marks, or back-
slashes. The GNU find -print0 option produces input suitable
for this mode.

--eof[=eof-str], -E eof-str, -e[eof-str]
Set the end of file string to eof-str. If the end of file
string occurs as a line of input, the rest of the input is
ignored. If eof-str is omitted or if -E option's argument is
an empty string, there is no end of file string. If this
option is not given, the end of file string defaults to "_".

--help Print a summary of the options to xargs and exit.

--replace[=replace-str], -I replace-str, -i[replace-str]
Replace occurences of replace-str in the initial arguments with
names read from standard input. Also, unquoted blanks do not
terminate arguments. If replace-str is omitted, it defaults to
"{}" (like for 'find -exec'). Implies -x and -L 1.

--max-lines[=max-lines], -L max-lines, -l[max-lines]
Use at most max-lines nonblank input lines per command line;
max-lines defaults to 1 if omitted. Trailing blanks cause an
input line to be logically continued on the next input line.
Implies -x.

--max-args=max-args, -n max-args
Use at most max-args arguments per command line. Fewer than
max-args arguments will be used if the size (see the -s option)
is exceeded, unless the -x option is given, in which case xargs
will exit.

--interactive, -p
Prompt the user about whether to run each command line and read
a line from the terminal. Only run the command line if the
response starts with 'y' or 'Y'. Implies -t.

--no-run-if-empty, -r
If the standard input does not contain any nonblanks, do not
run the command. Normally, the command is run once even if
there is no input.

--max-chars=max-chars, -s max-chars
Use at most max-chars characters per command line, including
the command and initial arguments and the terminating nulls at
the ends of the argument strings. The default is as large as
possible, up to 20k characters.

--verbose, -t
Print the command line on the standard error output before exe-
cuting it.

--version
Print the version number of xargs and exit.

--exit, -x
Exit if the size (see the -s option) is exceeded.

--max-procs=max-procs, -P max-procs
Run up to max-procs processes at a time; the default is 1. If
max-procs is 0, xargs will run as many processes as possible at
a time. Use the -n option with -P; otherwise chances are that
only one exec will be done.

SEE ALSO
find(1L), locate(1L), locatedb(5L), updatedb(1) Finding Files (on-line
in Info, or printed)



XARGS(1L)