디렉터리에 있는 파일 목록을 작성해야 하지만 제외할 디렉터리 목록이 포함된 파일도 전달해야 합니다.
다음 제안을 보았지만 플래그를 입력할 때 운이 좋지 않습니다.
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