findeでxargsを使用する際にxargsへの標準入力が空だった場合の動作

linux

findコマンドで使用できる「xargs」。

findeでxargsを使用する際にxargsへの標準入力が空だった場合にどのような動作になるのか確認してみましょう。

カレントディレクトリは「/」です。「/tmp/kamo」配下に「tora1」というファイルを格納しました。

まずはファイルが存在する場合の動作です

続いてファイルが存在しない場合の動作です。

「find: ‘/tmp/kamo/tora2’: No such file or directory」という出力の後、lsコマンドの結果が出力されています。

カレントディレクトリが「/」のため、ここで出力された内容はカレントディレクトリで「ls -l」コマンドを実行したときの内容になります。

紛らわしいですね。

これは、xargsコマンドの「–no-run-if-empty」オプションを使用すれば回避できます。

試してみます。

さきほど出力された「/」でのlsの結果が出力されなくなりました。

 

なお、「–no-run-if-empty」の位置をコマンドの後ろにすると以下のようにエラーになります。

あくまでもxargsコマンドのオプションなので、xargsの直後に配置する必要があるわけですね。

Secured By miniOrange
タイトルとURLをコピーしました