首页 > 解决方案 > 仅打印文件出现的子目录

问题描述

对于给定的文件,我只想列出它出现的子目录。我正在使用以下方法搜索文件:

find . -name <filename> -print

但这也在打印文件名。我还想列出按创建日期排序的子目录。我正在对这样的文件进行排序:

find . -name test.txt -printf "%T@\t%Tc %6k KiB %p\n" | sort -n | cut -f 2-

有人可以帮忙吗?

标签: shellfind

解决方案


您正在寻找目录,那么仅构建与正确目录匹配的条件呢?

find . -type d -exec test -f {}/test.txt \; -print

这需要为每个文件生成一个额外的成本exec,但它又快又简单。

不过,列出按创建日期排序的结果可能会有问题。如果目录名称都很简单——没有像换行符这样的特殊字符的字母数字——那么你可以不用ls管这些事情:

ls -dt $(find . -type d -exec test -f {}/test.txt \; -print)

但要小心可怕的Parsing LS风险。

除此之外..您可以使用stat收集数据信息进行排序,但它的行为将取决于您的操作系统,或者用可以处理文件系统数据的实际编程语言编写一些东西。


推荐阅读