특정 상대 디렉터리에서 찾기 사용 [닫기]

특정 상대 디렉터리에서 찾기 사용 [닫기]

내가 다음 디렉터리에 있다고 가정해 보겠습니다.

/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(다음의 첫 번째 디렉토리 구성 요소 /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. 이 시점에서는 find mydir...이전 값에 대해 명령을 실행합니다.mydirB-dir

PWD스크립트가 실행되는 동안 현재 디렉터리( )가 업데이트됩니다. 디렉토리 경로 문자열을 묵시적으로 사용하는 것보다 디렉토리 경로 문자열을 조작하여 디렉토리 변경을 피하는 것은 어렵지 않지만 $PWD저는 이 방법을 구현하기로 했습니다.

관련 정보