我正在尝试查找使给定命令成功结束的所有文件(退出代码 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
。