从特定的相对目录使用“查找”

从特定的相对目录使用“查找”

假设我在以下目录中:

/A-dir/B-dir/mydir/… some directories …/x-dir

我想find从 搜索mydir,但mydir事先没有具体知道;它由当前工作目录定义,作为/A-dir/B-dir/从当前工作目录“向上”移动时的第一个目录(此路径已明确指定)。这样,find将搜索mydir,但不会搜索任何其他目录B-dir(否则,我可以使用

find /A-dir/B-dir/ -name … …

)。

答案1

find "${PWD%"${PWD#/A-dir/B-dir/*/}"}" ...

$PWD( after中的第一个目录组件/A-dir/B-dir

或者:

find "${PWD%"${PWD#/*/*/*/}"}" ...

(前 3 个目录组件)

或者:

find "${PWD%"${PWD#/*/B-dir/*/}"}" ...

B-dir(在 中最左边出现的组件之后的第一个目录组件$PWD)。

使用zsh,您还可以执行以下操作:

find ${(M)PWD#/*/B-dir/*/}

答案2

像这样的东西可能就是您正在寻找的:

#!/bin/bash
last="${PWD/*\/}"
while test / != "$PWD"
do
    cd ..
    this="${PWD/*\/}"
    if test 'B-dir' = "$this"
    then
        find "$last" ...
        break
    fi
    last="$this"
done

它假设您从 开始,/A-dir/B-dir/mydir/... some directories .../x-dir并沿着树向上移动,直到到达B-dir。此时,它会针对previousfind mydir...的任何值运行该命令。mydirB-dir

当前目录 ( PWD) 在脚本运行时更新。通过操作目录路径字符串而不是隐式使用 来避免目录更改并不困难$PWD,但我选择以这种方式实现它。

相关内容