【问题标题】:How to find directories with the name of specific length如何查找具有特定长度名称的目录
【发布时间】:2010-12-12 23:37:35
【问题描述】:

如何找到具有特定长度名称的目录? 例如,我有一堆目录,其名称长度等于 33 个字符('a92e8cc611fdebcca3cf2fc8dc02c918'、'c442fb3f46d6c8bd17d27245290a9512' 等等)。 find 实用程序是否接受“wc -c”形式的条件?或者也许应该将其他一些实用程序放在一起?

【问题讨论】:

    标签: linux unix find name-length


    【解决方案1】:

    GNU find 的几种方法

    $ find . -type d -name "?????????????????????????????????"
    
    $ find /path -type d -printf "%f\n" | awk 'length==33'
    

    【讨论】:

    • +1 但我认为查找目录而不是文件应该是“-type d”
    • 找到 . -regextype posix-extended -type d -regex ".{5}"
    • aeh 抱歉,使用 35 而不是 5。您需要计算前导“./”
    • 请注意 -regex 匹配整个路径。因此,如果我开始从目录中查找,使用 -regex 将不起作用,例如:find /path -regextype posix-extended -type d -regex ".{35}" 而不是当前目录
    【解决方案2】:

    您没有 Java 标记,但如果有,您将编写一个 FileFilter 来封装您想到的任何标准并将其传递给 java.io.File.list() 方法。如果你想遍历整个目录结构树,你将不得不递归,但它是完全可行的。

    抱歉,这不是 *nix 脚本。

    Apache Commons IO JAR 有一些不错的文件和目录实用程序,可以轻松完成这项工作。

    【讨论】:

    • 我不想为此使用 Java。 :)
    • 也许不是...我写了 90% 的内容,然后才注意到缺少“java”标签,所以我还是发布了它。
    【解决方案3】:

    当然:

    find dir -name '?????????????????????????????????'
    

    (这是 33 次 ?)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-25
      • 2012-04-17
      • 1970-01-01
      • 1970-01-01
      • 2020-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多