주어진 명령을 성공적으로 종료하게 만든 모든 파일을 찾으려고 합니다(종료 코드 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
.