如何将“file”工具变成“find”的谓词?

如何将“file”工具变成“find”的谓词?

我有类似的东西:

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

我想要这样的东西:

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

答案1

您可以使用选项bash在内部运行并在 shell 内运行,例如: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是 can be -lsor -print0or more 谓词。

相关内容