如何使用find命令仅输出包含.txt格式文件的目录路径
实现仅输出包含.txt文件目录的命令
符合需求的命令
find . -type d -exec sh -c 'ls -1 "{}"/*.txt > /dev/null 2>&1' \; -print
执行后只会输出直接包含.txt格式文件的目录路径,和你预期的输出结果一致。
参数说明
-type d:和你原有逻辑一致,仅遍历所有目录类型节点-exec sh -c '...' \;:对每个遍历到的目录执行自定义校验逻辑,检查当前目录下是否存在.txt后缀文件,所有输出重定向到/dev/null避免多余信息打印-print:仅当上述校验逻辑返回成功(即目录下存在.txt文件)时,打印该目录的路径- 命令默认兼容带空格、特殊字符的目录名场景
如果你需要放宽规则,只要目录的任意子层级存在.txt文件就算符合条件,可以使用以下效率更高的命令:
find . -type d -exec sh -c 'find "{}" -type f -name "*.txt" -print -quit | grep -q .' \; -print
内容的提问来源于stack exchange,提问作者Alejandro Vargas
相关产品推荐
相关产品推荐

