"find" 명령 종료 상태에 대한 "파일 시스템 주기 감지됨" 경고의 영향을 억제하는 방법은 무엇입니까?

"find" 명령 종료 상태에 대한 "파일 시스템 주기 감지됨" 경고의 영향을 억제하는 방법은 무엇입니까?

이 명령을 사용하여 find해결해야 할 일부 기호 링크가 포함된 디렉터리 트리에서 특정 시간(분)보다 오래된 모든 일반 파일을 찾습니다.

find -L . -type f -mmin +300 -print

그러나 이 디렉토리 트리에는 일부 순환 기호 링크가 있으며 이로 인해 find다음 오류가 발생합니다.

/usr/bin/find: File system loop detected; ‘/storage/tester1/data/webdav’ is part of the same file system loop as ‘/storage/tester1/data’

디렉터리 구조에서 이 루프를 제거할 수 없고 키 사용을 피할 수 없습니다. 그러나 오류를 감지 -L하기 위한 올바른 종료 코드를 얻으려면 이 오류를 억제해야 합니다 .find진짜가능한 오류(대신'루프가 감지되었습니다'경고하다).
리디렉션특별한 오류 2>/dev/null아직 종료 상태가 표시되므로 아무것도 할 수 없습니다.1이 루프로 인해 어떤 검색에서도 아무것도 감지되지 않습니다.진짜내 스크립트에서 검색하는 동안 오류가 발생했습니다.

어떻게 피하고 종료 상태를 얻을 수 있습니까?0심볼릭 링크 루프를 사용하여 디렉토리 트리에서 검색이 성공했나요?

참고: 이 사이트에 "루프 감지됨"에 대한 몇 가지 유사한 질문이 있다는 것을 알고 있지만 다음 심볼릭 링크를 제거하면 모든 질문을 해결할 수 있으므로(내 경우에는 불가능함) 이 질문은 중복되지 않습니다. 닫지 마세요!

답변1

논평할 만큼 평판이 좋지 않습니다.

find의 출력을 가져와서 역방향 일치를 위해 grep을 사용( -v)하여 "파일 시스템 주기 감지됨"이 포함된 항목을 제외할 수 있습니다.

find / -type d -name bar 2>&1 | grep -v "File system loop detected"

한 가지 예:

cd /usr
find . -type d -name bar 2>&1

./share/locale/bar

찾고 있는 것: './share/polkit-1/rules.d': 권한이 거부되었습니다.

echo $?

1

find . -type d -name bar 2>&1 | grep -v "Permission denied"

./share/locale/bar

echo $?

0

관련 정보