如何仅查找文件,使用哪个命令 xyz 成功结束?

如何仅查找文件,使用哪个命令 xyz 成功结束?

我正在尝试查找使给定命令成功结束的所有文件(退出代码 0)。

find 手册页介绍了 -exec:Execute command; true if 0 status is returned.

虽然列在下面Actions,但我认为这意味着command将显示给定结尾为 0 的文件。

然而,过去的使用和尝试find . -exec true \;find . -exec false \;没有给出任何输出,证明我错了。

示例调用是find . -exec ./is_dir.py {} \;,它应该打印所有找到的目录。 (我知道,您可以针对这种特殊情况进行测试。我找不到满足我实际需求的测试组合。)

由于未能足够好地阐述我的问题,搜索没有结果。

答案1

你可以做:

find . -exec ./is_dir.py {} \; -o -print

它将列出除目录之外的所有内容。假设它is_dir.py是可执行的 ( chmod +x is_dir.py) 并包含类似以下内容:

#!/usr/bin/env python

import sys
import os

if os.path.isdir(sys.argv[1]):
    sys.exit(0)
sys.exit(1)

如果is_dir.py生成自己的输出,您可以执行以下操作:

 rm -f nondir.lst
 find . -exec ./is_dir.py {} \; -o -exec echo  {} >> nondir.lst \;

这样它的输出就不会与失败的名称列表混合在一起is_dir.py

相关内容