2016-11-17 67 views
-6

我需要一个命令,其输出将是我正在搜索的目录的绝对路径。Linux命令查找单个目录 - 这是目前唯一的目录

条件:父目录不应该包含任何其他目录,除了我正在寻找的目录。

例子:

比方说,我有以下目录结构和我正在寻找的GHI目录:

  1. /家庭/用户/ ABC/XYZ/
  2. /home/user的/ ABC/PQR/GHI
  3. /家庭/用户/ LMN/GHI/
  4. /家庭/用户/ LMN/DEF/

现在,如果我运行命令,输出应该给我:

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

回答

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

请注意,它不能正确处理包含空格的目录名称。这是读者的练习。

+3

我不觉得OP关心它是如何工作的。他只需*一个命令。 – hek2mgl

+1

@ hek2mgl:绝对如此。这就是为什么我很高兴写这个shell怪物,而不是真正的代码! –

+1

@JohnZwinck:修改命令为 - find ./ -maxdepth 4 -type d | awk -F /'{print $ 5,$ 4,$ 3}'| sort -k2 | uniq -u -f1 | awk'{print $ 2'/'$ 1}'。这对我的要求有效,谢谢..! – Huzaifa