![使用 find 只计算包含特定 3 个文件的目录?](https://linux22.com/image/132584/%E4%BD%BF%E7%94%A8%20find%20%E5%8F%AA%E8%AE%A1%E7%AE%97%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%203%20%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E7%9B%AE%E5%BD%95%EF%BC%9F.png)
是否可以find
仅返回该目录中存在 3 个文件名的结果?
当然最后我们可以用来wc -l
统计它们......
但从某种项目根目录开始,然后在那些与名称/正则表达式模式匹配的子文件夹中尝试列出其中包含的子文件夹:
file1.ext1
和file2.ext2
和*.ext3
然后仅直接计算wc -l
所有这些文件是否存在于其中?
答案1
find
您可以使用-exec
或运行未内置的测试-execdir
,并将其结果用作find
测试。在这种情况下:
find . -name \*.ext3 -execdir /usr/bin/test -e file1.ext1 -a -e file2.ext2 \; -printf "%p\n" | sort -u | wc -l
这将查找匹配的文件*.ext3
,并且对于它找到的每个文件,/usr/bin/test
在包含的目录中运行以检查是否file1.ext1
也file2.ext2
存在于该目录中。如果这样做,它会输出包含目录的路径。然后对输出进行过滤以删除重复项,最后进行计数。