unix find 명령에서 디렉토리 목록 제외

unix find 명령에서 디렉토리 목록 제외

디렉터리에 있는 파일 목록을 작성해야 하지만 제외할 디렉터리 목록이 포함된 파일도 전달해야 합니다.

다음 제안을 보았지만 플래그를 입력할 때 운이 좋지 않습니다.

find $dir_name $(printf "! -name %s " $(cat $exclude_file))

이 작업을 수행할 수 있는 방법이 있나요? 아니면 전체 목록을 만든 다음 이를 살펴보고 제외된 디렉터리의 부분과 일치하는 항목을 제거해야 하나요?

답변1

이름이 아닌 경로를 포함 했다면 해당 항목을 일치시키는 데 exclude_file사용해야 합니다 . -path일치하는 디렉터리의 하위 디렉터리를 제외하려면 하위 -prune디렉터리도 필요합니다. 이것은 작동합니다:

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -print

파일을 보기만 하고 싶다면 파일을 인쇄하면 됩니다.

find . -type d \( $(printf -- "-path */%s -o " $(cat "$exclude_file")) -false \) -prune -o -type f -print

관련 정보