「ファイル」ツールを「検索」の述語に置き換える方法は?

「ファイル」ツールを「検索」の述語に置き換える方法は?

私は次のようなものがあります:

find . -type f -print0  | xargs -0 file | grep Matroska | cut -d: -f 1-1 | xargs rm

私は次のようなものが欲しい:

find . -type -f -filemagic "Matroska" -delete

答え1

bashオプションを使用して内部およびシェル内で実行できます。たとえば、次のようになります。find-execfile

find . -type f -execdir bash -c 'file "$0" | grep -q Matroska && rm "$0"' {} \;

答え2

-exec実際には述語として使用できます。find(1):

Execute command; true if 0 status is returned.

したがって、この例は次のようになります。

find . -type f -exec sh -c 'file "$0" | grep -q Matroska' '{}' ';' -and -delete

明らかに、-delete置換は述語になるか、-lsそれ-print0以上になる可能性があります。

関連情報