【问题标题】:csh find command: how to get the upmost directorycsh find 命令:如何获取最上面的目录
【发布时间】:2017-01-06 09:22:54
【问题描述】:

我正在寻找一个只搜索目录的 csh 命令。
我知道目录的名称 (MY_DIR),但是我完全忽略了它们在当前目录之下的距离。

我想要命令:

  • 没有给出错误消息,以防它最终进入不可访问的目录;
  • 给出一个空字符串,以防找不到目录;
  • 在找到目录的第一个匹配项后立即退出搜索;
  • 优先考虑最上面的目录。

我认为find 是正确的命令,我这样使用它:

find . -type d ! -perm -a+r -prune -o \( -type d -o -type l \) -name MY_DIR -print -quit

目录结构如下

DIR_A0/DIR_A1/DIR_A2/MY_DIR  
DIR_B0/DIR_B1/MY_DIR

结果是:

DIR_A0/DIR_A1/DIR_A2/MY_DIR

我更想得到:

DIR_B0/DIR_B1/MY_DIR

我想知道是否有人可以就如何解决这个问题给我任何建议。

在此先感谢

【问题讨论】:

    标签: find csh


    【解决方案1】:

    “最上层”目录是/ 字符最少的目录。

    Borrowing from this answer,我们可以通过管道输出到awk来得到这个:

    find . -name MY_DIR |\
      awk -F/ 'BEGIN { depth=100; } depth > NF { depth=NF; dir=$0; } END { print dir }'
    

    请注意,您需要从find 命令中删除-quit 选项。 AFAIK 没有办法用 just find 来做到这一点,因为find simple 会在文件系统中存储路径时找到它们(可以按任何顺序)。您将需要首先获取完整列表。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-05-11
      • 2015-04-14
      • 2016-01-06
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 2019-06-09
      相关资源
      最近更新 更多