我需要一个命令,其输出是我正在搜索的目录的绝对路径。
条件:父目录不应包含除我要查找的目录之外的任何其他目录。
示例:
假设我有以下目录结构,并且正在搜索 GHI 目录:
- /home/user/ABC/XYZ/
- /home/user/ABC/PQR/GHI
- /home/user/LMN/GHI/
- /home/user/LMN/DEF/
现在,如果我运行该命令,输出应该给出:
-/home/user/ABC/PQR/GHI 因为 GHI 是父目录 PQR 中唯一存在的子目录。
最佳答案
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
。
请注意,它无法正确处理包含空格的目录名称。这是给读者的一个练习。
关于Linux 命令查找单个目录 - 这是唯一存在的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40655700/