명령에 몇 가지 문제가 있습니다 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 -FzZ
project/dir1/dir2''를 사용할 수 있습니다.
따라서 이러한 작업에 대한 몇 가지 대안을 제공합니다. 이상하게도 -path
find 명령이 언급되지 않습니다 .
find -path "*/project/dir1/dir2" -print
시작 부분을 참고해주세요 */
. 이는 find로 끝나는 모든 경로를 인쇄하도록 지시하며 /project/dir1/dir2
첫 번째 디렉토리의 이름은 이어야 합니다 project
. 그렇지 않으면 find myproject/dir1/dir2
등을 수행합니다.