shell - 仅打印文件出现的子目录
问题描述
对于给定的文件,我只想列出它出现的子目录。我正在使用以下方法搜索文件:
find . -name <filename> -print
但这也在打印文件名。我还想列出按创建日期排序的子目录。我正在对这样的文件进行排序:
find . -name test.txt -printf "%T@\t%Tc %6k KiB %p\n" | sort -n | cut -f 2-
有人可以帮忙吗?
解决方案
您正在寻找目录,那么仅构建与正确目录匹配的条件呢?
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
收集数据信息进行排序,但它的行为将取决于您的操作系统,或者用可以处理文件系统数据的实际编程语言编写一些东西。
推荐阅读
- c++ - 了解虚拟派生类的大小
- python - 如何在计算验证指标之前编写自定义 Keras 验证以对多个图像切片进行平均预测
- angular - NGX-MQTT | 蚊子
- java - Maven(exec plugin) 不使用“/”字符解析项目路径
- ssis - 添加新的转换列失败
- database - 使用 MongoDB Compass 克隆 MongoDB 数据库
- gluon-mobile - Gluon Afterburner Presenter.initialize() 未调用
- java - 获取当前时间前后 12 小时
- nuxt.js - 如何在 Nuxt 路由器中间件中添加重定向?
- r - 给给定 sd 值的多个 geom_point 变量添加误差线