这是非常独特的一个。
我正在寻找一种方法来列出文件夹中的所有顶级目录,其中包含子目录,其中的新文件或修改文件的创建时间不超过 30 天。
我们使用复制方法将用户文件同步到中央存储库,我正在寻找一种方法来监控哪些用户在上个月内同步了文件。然后我们可以对那些不存在的问题进行故障排除。
我使用了“find . -type d -mtime -30”,但这列出了每个子文件夹,并且输出太大而无法提供简洁的图片。
任何帮助将非常感激。
答案1
我会find
依次使用每个目录,并将其通过管道grep -q .
检查是否有任何结果,并根据是否有任何结果有条件地打印目录名称:
for d in */; do find "$d" -type f -mtime -30 | grep -q . && printf %s\\n "$d"; done
答案2
这可能效率不高:
find -mindepth 3 -maxdepth 3 -type f -mtime -30 |
xargs -n 1 dirname |
xargs -n 1 dirname |
uniq # (or sort -u, I assume find's output is already sorted)
答案3
find */ -type f -mtime -30 -print0 |
sed -z -e 's:/.*$::' |
sort -z -u |
tr '\000' '\n'
需要 GNUsort
和 GNU (NUL 分隔输入)选项sed
。-z
find
列出当前目录的子目录中不到 30 天的所有文件。输出通过管道输入sed
以删除第一个之后的所有内容/
,然后输入sort
以对结果目录名称进行唯一排序。