찾기 ~와 찾기 *의 차이점

찾기 ~와 찾기 *의 차이점

검색 파일 find *과 의 차이점은 무엇입니까? find ~터미널에서 현재 작업 디렉토리가 열리면 root터미널에서

root@devils-ey3:~# find * -print -quit
~

같은 디렉토리에

root@devils-ey3:~# find ~ -print -quit
/root

하지만 변경하면 pwd출력은 find ~ -print -quit이전과 동일하지만 다른 출력은 변경됩니다. 파일 찾기는 무엇을 *합니까?~

답변1

의 기본 형식 find

find WHERE WHAT

따라서 에서는 find **간주됩니다 WHERE. 이제 *그것은 와일드카드입니다. 현재 디렉터리의 모든 항목과 일치합니다(기본적으로 로 시작하는 파일/디렉터리 제외 .). Windows에 해당하는 것은 입니다 *.*.*확장하다이를 설명하기 위해 find다음 디렉토리를 고려하십시오.

$ ls
file  file2

set -x디버그 정보를 활성화하고 명령을 실행 하면 find다음이 표시됩니다.

$ find * -print -quit
+ find file file2 -print -quit
file

위에 표시된 것처럼 *디렉터리의 모든 파일로 확장하면 실제로 실행되는 것은 다음과 같습니다.

find file file2 -print -quit

이므로 -quit찾으라고 지정한 파일의 첫 번째 파일 이름을 인쇄하고 종료합니다. 귀하의 경우에는 이라는 파일이나 디렉토리가 있는 것으로 나타나서 ~그것이 인쇄됩니다.

그러나 물결표( ~)에는 특별한 의미도 있습니다. 이것은 귀하의 디렉토리에 대한 바로가기입니다 $HOME:

$ echo ~
/home/terdon

따라서 find ~루트로 실행 하면 ~이는 로 확장 /home/root되고 실제로 실행하는 명령은 다음과 같습니다.

# find ~ -print -quit
+ find /root -print -quit
/root

find다시 말하지만, 특정 위치에서 파일이나 디렉터리를 검색하고 첫 번째 항목을 인쇄한 후 종료하라는 의미입니다 . 첫 번째로 일치하는 파일이나 디렉토리가 /root그 자체이므로 이것이 인쇄됩니다.

답변2

먼저 다음 구문을 기억하세요 find.

find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]

파일을 검색할 때 find *와 find ~의 차이점은 무엇입니까?

  • *모든 것에 어울리는 while 카드입니다.

    여기에서는 find *현재 디렉터리의 파일/디렉터리 목록과 검색할 대상 이름 목록을 전달합니다. 따라서 다음 파일과 이름이 같은 모든 파일을 찾습니다.pwd

    (감사해요@테덴~을 위한설명하다'find *'는 무엇을 봅니까?저것답변)

  • ~사용$HOME목차.

    따라서 (홈 디렉토리) find ~내에서 (재귀적으로) 파일과 디렉토리를 찾으십시오.~


root@devils-ey3:~# find * -print -quit
~

위 출력에는 이름이 지정된 파일이나 디렉터리가 있어야 합니다 ~. /root(~as $HOME디렉토리 와 혼동하지 마십시오.)


root@devils-ey3:~# find ~ -print -quit
/root

설명하다 find ~ -print -quit:-

매우 다양한 선택 -quit::

-quit 즉시 종료합니다. 하위 프로세스는 계속 실행되지 않지만 경로는 더 이상 명령에 지정되지 않습니다.
              라인이 처리됩니다. 예를 들어 find /tmp/foo /tmp/bar -print -quit는 /tmp/foo만 인쇄합니다.
              -execdir ... {} +로 빌드된 모든 명령줄은 find가 종료되기 전에 호출됩니다.
              종료 상태는 오류 발생 여부에 따라 0일 수도 있고 아닐 수도 있습니다.
  1. ~/root루트 터미널에 있기 때문에 경로로 간주됩니다 .
  2. -quit디렉토리 이름만 인쇄

하지만 비밀번호를 변경하면 find ~ -print -quit의 출력은 이전과 같습니다...

상술 한 바와 같이:-find ~ -print -quit인쇄/root경로가 ~( /root루트 쉘 때문에) 로 설정되고 -quite.pwd

관련 정보