find -maxdepth 0 옵션을 사용하는 방법을 이해하려고합니다.

아래 디렉토리 구조가 있습니다.

--> file1 --> parent --> child1 --> file1 --> file2 --> child2 --> file1 --> file2 --> file1 

이제 다음과 같이 find 명령을 실행합니다.

find ./parent -maxdepth 0 -name "file1" find ./ -maxdepth 0 -name "file1" find . -maxdepth 0 -name "file1" 

위의 find 명령이없는 경우 file1 가 반환됩니다.

find의 man 페이지에서 아래 정보를 볼 수 있습니다.

-maxdepth 0은 테스트 및 작업을 명령 줄 인수에만 적용 함을 의미합니다.

-maxdepth 0 옵션으로 몇 가지 예를 검색했지만 적절한 예를 찾을 수 없습니다.

find 버전은 다음과 같습니다.

find --version find (GNU findutils) 4.4.2 

누군가 -maxdepth 0 옵션이 유용한 경우에 대한 몇 가지 지침을 제게 제공해 주시겠습니까? ?

편집

아래 명령을 실행하면 file1 이 두 번 나열됩니다.이 방식으로 작동하도록 의도 되었나요?

find . file1 -maxdepth 1 -name "file1" ./file1 file1 

Answer

현재 디렉토리에 file1가 있다고 가정하겠습니다. :

$ find . -maxdepth 0 -name "file1" $ find . file1 -maxdepth 0 -name "file1" file1 

이제 문서의 내용을 살펴 보겠습니다.

-maxdepth 0은 onl을 의미합니다. y 명령 줄 인수에 테스트 및 작업을 적용합니다.

위의 첫 번째 예에서 .는 명령 줄에 나열됩니다. .에는 file1라는 이름이 없으므로 출력에 아무것도 나열되지 않습니다. 위의 두 번째 예에서는 .file1가 모두 명령 줄에 나열되며 file1-name "file1"와 일치하며 출력에 반환되었습니다.

즉, -maxdepth 0 검색 디렉터리 또는 하위 디렉터리가 아닙니다 . 대신 명령 줄에 명시 적으로 나열된 파일 중에서 일치하는 파일 만 찾습니다.

예제에서 디렉터리 만 명령 줄에 나열되고 이름이 file1. 따라서 출력이 없습니다.

일반적으로 명령 줄에서 많은 파일과 디렉토리의 이름을 지정할 수 있습니다. 예를 들어 여기에서는 명령 줄에 11 개의 파일과 디렉터리가있는 find 명령을 시도합니다.

$ ls d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 $ find d1 file1 file10 file2 file3 file4 file5 file6 file7 file8 file9 -maxdepth 0 -name "file1" file1 

겹침 경로

고려 :

$ find . file1 -maxdepth 0 -iname file1 file1 $ find . file1 file1 -maxdepth 0 -iname file1 file1 file1 $ find . file1 file1 -maxdepth 1 -iname file1 ./file1 file1 file1 

분명히 Ramesh가 지적했듯이 find. file에서와 같이 경로가 동일한 파일로 연결되거나 file1 file1.

댓글

  • 감사합니다. 하지만 명령 줄에서 일부 파일 이름을 어떻게 전달할 수 있습니까?
  • 좋은 지적입니다. 내 업데이트 된 답변을 참조하십시오. 첫 번째 테스트 전에 원하는만큼 넣을 수 있습니다. 예 : find * -maxdepth 0 -name "file1". *는 현재 디렉토리의 모든 파일을 명령 줄에 나열합니다.
  • @Ramesh 답변이 다시 업데이트 되었으면 좋겠습니다. li>
  • 다시 감사합니다. 최근 업데이트에서 더 자세한 내용으로 질문을 업데이트했습니다.
  • @Ramesh 문서화 된 내용을 찾을 수 없지만 동일한 동작이 나타납니다. find가 각각을 살펴 봅니다. 명령 줄 및 보고서의 경로가 중복 된 경우에도 각각 일치합니다.

Answer

디렉토리 사용 내에서 비재 귀적으로 파일 (디렉토리 아님)을 찾으려는 경우 :

 find . -maxdepth 1 -type f -name "file1" # ./file1  

-maxdepth 0 검색하지 않습니다 . find에서 인수로 제공 한 파일 / 디렉토리 이름 사이에서만 일치를 시도합니다. 예 : 위의 문에서 0 값을 사용하면 file1.에 일치 시키려고합니다. 일치하지 않습니다. . 대신 *를 전달하면 bash가 *를 현재 디렉토리의 파일 목록으로 대체합니다. 일치를 반환합니다.

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다