【问题标题】:List directories which contain an edited file列出包含已编辑文件的目录
【发布时间】:2014-09-09 13:57:11
【问题描述】:

我有一个复杂的目录结构,有很多目录,每个目录有很多子目录,每个子目录又有很多子目录和文件。

我想要一个包含在过去 24 小时内编辑过的文件的顶级目录列表。

我使用find . -mtime -1 -ls 列出了所有已编辑的文件,但我只对它们所在的顶级目录感兴趣,而不是文件本身。

【问题讨论】:

    标签: linux directory find


    【解决方案1】:

    你可以拥有:

    find . -mindepth 2 -mtime -1 | awk -F/ '!a[$2]++ { print $2 }'
    

    具体检查文件(不是目录):

    find . -mindepth 2 -type f -mtime -1 | awk -F/ '!a[$2]++ { print $2 }'
    

    【讨论】:

    • 好一个!还准备发布一个额外的awk 解决方案,因为与我的解决方案相比,它节省了两个额外的过程。你速度更快! :)
    【解决方案2】:

    以下管道可以:

    find -mindepth 2 -mtime -1 | sed 's#\./\([^/]*\).*#\1#' | sort | uniq
    

    请注意,我使用-mindepth 2 来防止 find 返回已更改但位于当前文件夹而非子文件夹中的文件。

    【讨论】:

      【解决方案3】:
      find . -type f -mtime +1 -exec dirname {} \;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-10
        • 1970-01-01
        • 2011-08-05
        • 1970-01-01
        相关资源
        最近更新 更多