'find'명령을 사용하여 파일의 절대 경로 가져 오기


26

검색중인 파일의 절대 경로를 얻는 방법이 있습니까?

예를 들면 다음과 같습니다.

find .. -name "filename"

그것은 나에게 같은 결과를 제공 ../filename하지만 전체 경로를 원합니다.

필요한 것은 부모 디렉토리와 그 하위 디렉토리에서 특정 파일에 대해 나중에 다른 스크립트에서 사용할 것입니다.

감사


답변:


15

다음과 같은 것을 시도하십시오 :

find "$(cd ..; pwd)" -name "filename"

고마워, 나는 단지 테스트하고 있었다 $(cd ..; pwd). 여기서는 정상적으로 작동하지만 터미널에서 혼자하면 부모 디렉토리를 얻을 수 없습니다 ... "Bash : <dir> : 디렉토리입니다. $(cd ..; echo "something")" command "
JorgeeFG

별도의 명령을 의미합니까? 그런 다음 달러 기호를 생략해야합니다.(cd ..; pwd)
Scrutinizer

고마워요 왜 $를 제거해야하는지에 대한 언급은 서브 쉘에 어떤 영향을 주나요?
JorgeeFG

1
( ... )는 서브 쉘에서 실행을 의미하며 출력은 stdout에 기록됩니다. $( ... )"명령 대체"를 나타냅니다. 후자는 변수 확장 인 것처럼 사용할 수 있습니다.
Scrutinizer

find / -name "filename"
Panther

12

-exec옵션을 사용해보십시오 find:

find .. -name "filename" -exec readlink -f {} \;

참고 : readlink기호 링크 또는 표준 파일 이름의 값을 인쇄합니다.


이것은 모든 파일에서 readlink를 호출하므로 매우 효과적이지 않습니다.
bac0n

9

bash의 Tilde Expansion을 사용 하여 현재 작업 디렉토리 find의 절대 경로를 얻을 수 있습니다. 이렇게하면 결과에 대한 절대 경로도 인쇄됩니다.

find ~+ -type f -name "filename"

에서 실행 ~/Desktop되면 다음으로 확장됩니다.

find /home/yourusername/Desktop -type f -name "filename"

다음과 같은 결과를 인쇄합니다.

/home/yourusername/Desktop/filename

이 방법을 현재 작업 디렉토리의 상위 디렉토리 와 함께 사용하려면 다음 cd을 호출 하기 전에 수행 해야합니다 find.

cd .. && find ~+ -type f -name "filename"

7

가장 간단한 방법은

find "$(pwd -P)" -name "filename"

예! 또는find `pwd -P` -name "filename"
Apollys는 Monica

부모가 아닌 현재 디렉토리에서 파일을 찾습니다.
bac0n

1

또한 PWD를 사용하면 전체 디렉토리를 표시 할 수 있습니다. Pwd는 파일 이름 확장과 같은 모든 디렉토리를 보여줍니다. 이것이 도움이 되었기를 바랍니다.


1

이것은 나를 위해 일했지만 첫 번째 사건 만 반환합니다.

realpath $(find . -type f -name filename -print -quit)

Sergiy Kolodyazhnyy에서 제안한대로 모든 경우에 대한 전체 경로를 얻으려면

find . -type f -name filename | xargs realpath

이전 댓글 제거, +1, 좋은 직장 @Wyrmwood
Sergiy Kolodyazhnyy

1

지난 디렉토리 구성 요소를 제거 매개 변수 확장 .

find "${PWD%/*}" -name 'filename'

mapfile 을 사용하여 나중에 사용하기 위해 find에서 인덱스 배열로 출력을 저장 하는 방법의 예입니다 .

mapfile -t -d '' < <(find ${PWD%/*} -name 'filename' -print0)

배열 이름을 지정하지 않으면 MAPFILE이 기본 배열 이름이됩니다.

for i in "${MAPFILE[@]}"; do
    echo "$((n++)) $i"
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.