디렉터리에 있는 파일 목록을 작성해야 하지만 제외할 디렉터리 목록이 포함된 파일도 전달해야 합니다.
아래 제안을 보았지만 유형 플래그와 관련하여 운이 없었습니다.
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