web-dev-qa-db-ja.com

bashグロブには多すぎる場合にパターンに一致するファイルを一覧表示します

以下を実行したいと思います。

ls /path/to/files/pattern*

取得します

/path/to/files/pattern1 
/path/to/files/pattern2 
/path/to/files/pattern3

ただし、そのディレクトリのパターンに一致するファイルが多すぎるため、

bash: /bin/ls: Argument list too long

これを行うためのより良い方法は何ですか?たぶんfindコマンドを使用していますか?ファイルへのフルパスを印刷する必要があります。

16
DavidR

ここで、findxargsの組み合わせが役立ちます。

find /path/to/files -name "pattern*" -print0 | xargs -0 ls

コメントからの注意:xargsから取得したリストを使用したい場合は、findが役立ちます。ファイルを一覧表示するだけの場合は、findで十分です。ただし、copydelete、またはリストに対して何らかのアクションを実行する場合は、-execの代わりにxargsを使用すると便利です。

33
jaypal singh