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

관련 정보