回答:
find . -name *foo* | xargs -r ls -lah
うまくいくはずです。
-exec +
(または-exec \;
)を使用することです。xargs
この-0
オプションで使用するのは安全です。つまり、パイプするコマンドxargs
をNULLバイト(\ 0)で区切るために指定する必要があります。でfind
あなたはそれを行うことができます-print0
。xargsの-0およびfindの-print0は標準ではありませんが、-execは標準であるため、移植性が問題になる場合は、-execでfindを使用してください。
これを使用します:(lsは並べ替えることができ、スペースまたは異常な文字を含むファイル名で動作します)
find . -name *foo* -print0 | xargs -0 ls -lah
「-print0」は、などのファイル名の後にnullが続くfile foo 1
出力を取得することを意味しますfind
。xargsの「-0」引数は、この種の入力を想定しているため、スペースを含むファイル名はls
コマンドに正しくパイプされます。
xargs
建設は、より良いよりも、いくつかの方法であるfind etc -exec ls {} \;
ファイル名のすべてがに送信されますので、ls
あなたは、タイムスタンプ(使用して、それらすべてをソートしたいのであれば、一度ls
、)この作品のようなものを:
find . -iname *pdf -print0 | xargs -0 ls -ltr
NetBSDシステムでは、「-printx」もオプションです(これは私にとって有用な議論のようですが、xargs -0があり、それでかまいません)。
find . -name *foo* -printx | xargs ls -lah
(Ubuntu用ではありません)