Linux命令查找单个目录 - 这是唯一存在的目录

时间:2016-11-17 13:04:38

标签: linux

我需要一个命令,其输出将是我正在搜索的目录的绝对路径。

条件:父目录不应包含除我要查找的目录之外的任何其他目录。

示例:

假设我有以下目录结构,我正在搜索GHI目录:

  1. /家庭/用户/ ABC / XYZ /
  2. /家庭/用户/ ABC / PQR / GHI
  3. /家庭/用户/ LMN / GHI /
  4. /家庭/用户/ LMN / DEF /
  5. 现在,如果我运行命令,输出应该给我:

    - / home / user / ABC / PQR / GHI 因为GHI是父目录PQR中唯一存在的子目录。

1 个答案:

答案 0 :(得分:1)

find ~ -type d -maxdepth 2 -depth 2 | awk -F/ '{print $5, $4}' \
    | sort -k2 | uniq -u -f1 | awk '{print $2"/"$1}'

它是如何工作的?首先,它打印所有深度2目录,然后将它们从ABC/XYZ翻转到XYZ ABC。然后它只采用唯一的,忽略第一个字段(在我们的示例中为XYZ)。然后将唯一记录翻转回原始订单,如ABC/XYZ

请注意,它无法正确处理包含空格的目录名称。这对读者来说是一种练习。