ksh:如何获取所有 "log" 目录按最近的 activity 排序?
ksh: How to get all "log" directories ordered by most recent activity?
我想根据其各自 log
子目录中最近写入的文件订购一组 50 个目录。因此,每个目录都有脚本和日志子目录。我们的想法是,找出哪个代码最活跃,所以我们首先迁移它。
我从类似的东西开始
for dir in $(find . -name log -type d); do printf $dir; ls -lcrt $dir | tail -n 1; done
但这会产生混乱的结果,需要进一步解析才能按日期排序。也许有更简单的方法?
谢谢
- 更新:由于每个目录有很多文件,第一步是获取每个目录的最新文件,并对其进行迭代。
所以我构建了一个双 for 循环,它做到了。
这个方法可能不能100%解决你的问题,但是很好用
假设过去2天最多有99个文件,那么
find . -type f -mtime -2 | xargs -n 99 ls -ltr | grep '/log/'
这个命令会找出所有修改时间在过去2天的文件然后做一个ls -ltr排序然后过滤/log/目录
希望对您有所帮助。
更新:由于每个目录有很多文件,第一步是只获取每个目录的最新文件(ls -lh |tail -1;类似的东西),然后迭代它。所以我构建了一个双循环,它不会赢得任何选美比赛,但得到了结果。
我想根据其各自 log
子目录中最近写入的文件订购一组 50 个目录。因此,每个目录都有脚本和日志子目录。我们的想法是,找出哪个代码最活跃,所以我们首先迁移它。
我从类似的东西开始
for dir in $(find . -name log -type d); do printf $dir; ls -lcrt $dir | tail -n 1; done
但这会产生混乱的结果,需要进一步解析才能按日期排序。也许有更简单的方法?
谢谢
- 更新:由于每个目录有很多文件,第一步是获取每个目录的最新文件,并对其进行迭代。 所以我构建了一个双 for 循环,它做到了。
这个方法可能不能100%解决你的问题,但是很好用
假设过去2天最多有99个文件,那么
find . -type f -mtime -2 | xargs -n 99 ls -ltr | grep '/log/'
这个命令会找出所有修改时间在过去2天的文件然后做一个ls -ltr排序然后过滤/log/目录
希望对您有所帮助。
更新:由于每个目录有很多文件,第一步是只获取每个目录的最新文件(ls -lh |tail -1;类似的东西),然后迭代它。所以我构建了一个双循环,它不会赢得任何选美比赛,但得到了结果。