Answers:
find
可以自己完成这一切:
find X -path '*/inc/*' -type d > list
阅读-path
部分内容以man find
获取更多信息。
正如我在评论中快速提到的:如果将目录行存储在文本文件中,则包含换行符的目录名称将无法明确表示。如果您确定目录不包含换行符,那就没问题。只是一般性评论。
这是一个方便的单行:
find X -type d -name "inc" -exec sh -c 'find {} -type d' \; > list
它运行find
在每个第一个find
结果上。该exec
选项还可以采用最小的shell命令,其中 - 正如我所说 - {}
被第一个命令的每个目录替换find
。
第二个find
将根据您的请求“列出第一个结果的所有子目录”,包括inc
目录。如果你不想在输出中使用它,那么让第二个find
至少输出深度为1的文件夹。
find X -type d -name "inc" -exec sh -c 'find {} -mindepth 1 -type d' \; > list
然后我们只需将命令重定向stdout
到list
。
find path -name inc -type d -exec sh -c 'find {} -mindepth 1 -maxdepth 1 -type d' \;
好吧,我找到了模拟这个嵌套查找的答案:
find X/ -type d | grep "/inc/" > list
find X/ -type d -print0 | awk 'BEGIN{RS="\0"}/\/inc\//' > list
(grep -z
也划上了空字符,但它的输出似乎是空分开为好,免得一会又需要把它管道例如xargs -0L1 echo
通过线得到它线)。在这种情况下,由于您要将列表保存到文件中,并且每个条目都由换行符分隔,因此文件名中的换行符仍将模糊地表示。也许您根本不需要中间文件,具体取决于您要对列表执行的操作。
试试这个:
find path-of-x -path '*/inc/*' -type d > list
"\inc\"
:)
-path
旗帜