경고를 무시하고 Find에서 오류 메시지를 유지하는 방법

경고를 무시하고 Find에서 오류 메시지를 유지하는 방법

명령을 실행하려고 하는데 find폴더 설정 방식으로 인해 스크립트 내에서 다음 경고가 여러 번 나타납니다.

find -L ./server/ -type f -printf '%s %p\n' | <rest of really long complicated script>

산출

find: File system loop detected; ‘./server/~andreas/root’ is part of the same file system loop as ‘./’.
find: File system loop detected; ‘./server/~bob/root’ is part of the same file system loop as ‘./’.
find: File system loop detected; ‘./server/~charles/root’ is part of the same file system loop as ‘./’.
...

알아요이런 메시지를 받습니다. 이러한 심볼릭 링크는 다른 스크립트에서 사용하기 위해 의도적으로 여기에 배치되므로 콘솔 출력에서 ​​이러한 경고를 안전하게 무시하고 싶습니다.

find유사한 경고가 표시되지 않도록 하는 방법"파일 시스템 루프가 감지되었습니다", 하지만 여전히 모든 "실제" 오류 메시지를 유지합니까?

find이름이 지정된 모든 디렉토리를 무시한다고 말할 수는 없습니다 root. 찾기 옵션이 있지만 -nowarn어디에 넣어도 작동하지 않습니다. 지금까지 조회를 위한 "로그 수준" 옵션을 찾지 못했습니다.

답변1

Bash 쉘을 사용하는 경우 출력 리디렉션을 사용하여 stderr을 필터링하여 특정 오류 메시지를 표시하지 않을 수 있습니다 grep.

find ... 2> >(grep -v "File system loop detected") | ...

이는 bash 매뉴얼/맨 페이지의 "프로세스 대체" 섹션에 설명되어 있습니다.https://www.gnu.org/software/bash/manual/html_node/Process-Substitution.html#Process-Substitution

관련 정보