xyz가 성공적으로 종료되는 명령을 사용하여 파일만 찾는 방법은 무엇입니까?

xyz가 성공적으로 종료되는 명령을 사용하여 파일만 찾는 방법은 무엇입니까?

주어진 명령을 성공적으로 종료하게 만든 모든 파일을 찾으려고 합니다(종료 코드 0).

찾기 매뉴얼 페이지에는 -exec가 설명되어 있습니다.Execute command; true if 0 status is returned.

아래에 나열되어 있지만 Actions이는 command주어진 끝자리가 0인 파일이 표시된다는 의미라고 가정합니다.

그러나 과거의 사용과 시도로는 find . -exec true \;결과 find . -exec false \;가 나오지 않아 제가 틀렸다는 것이 증명되었습니다.

예제 호출은 find . -exec ./is_dir.py {} \;발견된 모든 디렉토리를 인쇄해야 한다는 것입니다. (이 특별한 경우에 대해 테스트할 수 있다는 것을 알고 있습니다. 실제 요구 사항을 충족하는 테스트 조합을 찾을 수 없습니다.)

내 질문을 충분히 잘 공식화하지 못해 검색 결과가 나오지 않았습니다.

답변1

넌 할 수있어:

find . -exec ./is_dir.py {} \; -o -print

디렉토리를 제외한 모든 항목이 나열됩니다. is_dir.py실행 가능하고( ) 다음과 같은 내용을 포함한다고 가정합니다 chmod +x is_dir.py.

#!/usr/bin/env python

import sys
import os

if os.path.isdir(sys.argv[1]):
    sys.exit(0)
sys.exit(1)

is_dir.py자체 출력을 생성 하는 경우 다음을 수행할 수 있습니다.

 rm -f nondir.lst
 find . -exec ./is_dir.py {} \; -o -exec echo  {} >> nondir.lst \;

이렇게 하면 해당 출력이 실패한 이름 목록과 혼합되지 않습니다 is_dir.py.

관련 정보