.../project/dir1/dir2와 같은 특정 디렉터리 이름 중첩을 찾습니다.

.../project/dir1/dir2와 같은 특정 디렉터리 이름 중첩을 찾습니다.

명령에 몇 가지 문제가 있습니다 find. 해당 구문을 잘 이해하지 못해서 어디에나 위치할 수 있는 특정 디렉터리 구조를 찾으려면 스크립트에서 이 명령을 사용해야 합니다.

기본적으로 저는 "project/dir1/dir2"와 같은 구조를 가지고 있으며 항상 같은 이름을 가진 세 개의 디렉토리가 순서대로 존재한다는 것을 알고 있습니다. 차이점은 이 구조가 얼마나 깊이 중첩되어 있는지입니다. 예를 들어 다음과 같습니다.

$HOME/project/dir1/dir2

또는

$HOME/workspace/project/dir1/dir2

project/dir1/dir2기본적으로 구조물이 아무리 깊게 묻혀 있더라도 구조물을 찾을 수 있는 보편적인 방법이 필요합니다 .

이것은 항상 우분투에 있을 것입니다. 찾기 사용을 고려했지만 찾기 데이터베이스가 항상 최신 상태인지 확인해야 했습니다.

답변1

사용해 본 경우 find -name project/dir1/dir2다음 메시지가 표시됩니다.

find: 경고: Unix 파일 이름에는 일반적으로 슬래시가 포함되어 있지 않습니다(경로 이름에는 포함되어 있음). 이는 -name 'project/dir1/dir2'해당 시스템에서 항상 false로 평가될 수 있음 을 의미합니다 . 이 -wholename테스트가 더 유용 할 수도 있습니다 -samefile. 또는 GNU grep을 사용하는 경우 find ... -print0 | grep -FzZproject/dir1/dir2''를 사용할 수 있습니다.

따라서 이러한 작업에 대한 몇 가지 대안을 제공합니다. 이상하게도 -pathfind 명령이 언급되지 않습니다 .

find -path "*/project/dir1/dir2" -print

시작 부분을 참고해주세요 */. 이는 find로 끝나는 모든 경로를 인쇄하도록 지시하며 /project/dir1/dir2첫 번째 디렉토리의 이름은 이어야 합니다 project. 그렇지 않으면 find myproject/dir1/dir2등을 수행합니다.

관련 정보