다음 경로의 빈 디렉터리로 이동한다고 가정해 보겠습니다./home/user/dir
내가 실행하면 find . ! -name "*.txt"
결과는 다음과 같습니다.
.
하지만 실행하면 find /home/user/dir ! -name "*.txt"
아무런 결과도 얻지 못합니다.
find가 이런 식으로 동작하는 이유는 무엇입니까? 어디에 명시되어 있나요?
그리고 ..
그것을 포함시키면 어떨까요?
답변1
Find는 디렉토리 트리 검색 중에 발견된 .
항목을 인쇄해서는 안 됩니다...
. 어쨌든 그들은 쓸모가 없습니다. 처음부터 넣으면 .
정말 인쇄가 됩니다.
이것찾다유틸리티는 다음에 의해 지정된 각 파일에서 디렉토리 계층 구조를 반복적으로 내려야 합니다.길, [...] 계층 구조에서 발견되는 다른 파일에 대한 모든 경로 이름은 현재 경로 피연산자 a(현재 경로 피연산자가 1로 끝나지 않는 경우) 및 경로 피연산자를 기준으로 한 파일 이름의 연결로 구성됩니다. .관련 섹션에는 점 또는 점-점 구성 요소가 포함되어서는 안 됩니다., 후행 <slash> 문자가 없고 경로 이름 구성 요소 사이에 단일 <slash> 문자만 있습니다.
find ./foo
를 사용하여 유사한 경로 이름을 찾을 수 있습니다 . 여기서 는 현재 경로 피연산자가 되고 중간에 추가되며 상대 부분이 됩니다../foo/bar/hello.txt
./foo
/
bar/hello.txt
find /home/user/dir ! -name "*.txt"
최소한 no match /home/user/dir
로 인쇄되어야 합니다 . (물론 이름이 로 끝나지 않는 다른 파일도 인쇄해야 합니다 .) 부정을 사용하지 않으면 조건 과 일치하지 않으므로 인쇄되지 않습니다.dir
*.txt
.txt
find /home/user/dir -name "*.txt"
/home/user/dir