find 명령이 때때로 현재 디렉토리( . )를 나열하지만 때로는 그렇지 않은 이유나 근거가 무엇인지 궁금합니다.
"."을 사용하면 현재 디렉터리가 외부 디렉터리에 표시되지만 내부 디렉터리에는 표시되지 않습니다.
$ pwd
/home/me/a
$ find . -exec echo {} \;
.
./abc.txt
./a.txt
./d
./d/da.txt
특정 디렉토리를 지정하면 현재 디렉토리를 볼 수 없습니다.
$ find /home/me/a -exec echo {} \;
/home/me/a
/home/me/a/abc.txt
/home/me/a/a.txt
/home/me/a/d
/home/me/a/d/da.txt
이것이 ls의 견해입니다.
$ ls -lR
.:
total 4.0K
-rw-r--r--. 1 me 0 Oct 20 19:03 abc.txt
-rw-r--r--. 1 me 0 Oct 21 14:56 a.txt
drwxr-xr-x. 2 me 4.0K Oct 21 14:57 d/
./d:
total 0
-rw-r--r--. 1 me 0 Oct 21 14:57 da.txt
답변1
출력에 표시된 지점은 정확히 명령으로 지정한 find
현재 위치입니다 . find .
당신이 말할 때도 마찬가지입니다 find /home/me/a
. 두 경우 모두 find는 검색 중인 디렉터리(지정된 대로)와 find
해당 위치에서 발견된 해당 파일 및 디렉터리를 보여줍니다.
예
우리가 찾고 있는 디렉토리는.
$ find . ....
.
./abc.txt
./a.txt
찾기는 지정한 매개변수(예: )를 기반으로 결과를 표시합니다 .
.
우리가 찾고 있는 디렉토리는/home/me/a
$ find /home/me/a ....
/home/me/a
/home/me/a/abc.txt
/home/me/a/a.txt
find
지정한 매개변수에 따라 결과를 다시 표시합니다 /home/me/a
.
용어
규범을 내부 또는 외부 용어로 생각하지 말고 오히려 상대적이거나 절대적인 것으로 생각하십시오. 상대적으로 그렇다 .
, 물론이다 /home/me/a
. 어느 쪽이든 상관없습니다 find
. 해당 위치에서 아래쪽으로 발견된 디렉터리와 파일만 표시합니다.
답변2
상대 디렉토리()를 사용하면 find .
동일하지만 절대적인 while의 예상 결과가 제공됩니다. 절대 경로를 사용할 때는 이러한 현상이 나타날 것으로 예상하지 않습니다../abc.txt
find /home/ma/a/abc.txt
.
.
기술적으로 "찾기 및 바꾸기"가 가능하고 그 반대도 가능하므로 결과는 동일합니다 /home/me/a
.