locate -i nohup.out | xargs -d '\n' -L1 -p rm
Locate 出力の各行は xargs の引数として処理されるので と ?同じ-L1
です。-n 1
答え1
マニュアルから:
-L max-linesコマンドライン
ごとの最大max-linesスペース以外の入力行を使用します。末尾の空白のため、入力行は論理的に次の入力行に続きます。 -x を意味します。-n max-args
コマンドラインごとに最大 max-args 個の引数を使用します。サイズを超えると(-sオプションを参照)、-xオプションが指定されていない限り、max-argsよりも少ない引数が使用されます。この場合、xargsは終了します。-d delim
エントリは指定された文字で終了します。 [...]
これと私の理解に基づいて、あなたの場合、渡された引数で区切り-L1
文字を空白から(改行)に変更して-n1
同等にします。1
\n
-d
たとえば、-d
引数がない場合、位置出力にスペースが含まれている場合、行は2つの引数に分割されるため、rm withの2つの異なる用途が使用されますが、-n1
まだ1つの引数と1つのコマンドとして扱われます。-L1
答え2
マニュアルを読んでみると、-L
フィルタに違いがあるようです。空白ではない行、-n
いいえ。空白のみを含む行は出力されないと仮定するため、locate
このユースケースでは機能的に同じでなければなりません。
答え3
-n
スペースに分割、-L
改行に分割
したがって、異なる結果が生成されます。
printf '1 2\n3 4\n' | xargs -L1 echo
行ごとに分割するので、次のようになります。
echo 1 2
echo 3 4
出力:
1 2
3 4
しかし:
printf '1 2\n3 4\n' | xargs -n1 echo
スペースに分割されるので、次のようになります。
echo 1
echo 2
echo 3
echo 4
そして以下を作ります:
1
2
3
4
答え4
オプション-LはXSI拡張であるため、組み込みシステムに存在する必要はありません。
-n オプションは基本標準の一部であり、常に有効です。
参照規格を参照してください。http://pubs.opengroup.org/onlinepubs/9699919799/utilities/xargs.html
一部の実装では、空白で終わる行の動作を切り替えることもできますが、他の実装では -L オプションを指定するかどうかにかかわらず、空白で終わる行を連結することもできます。