자체 파일 이름이없는 파일을 찾는 방법


1

템플릿을 사용하여 파일을 생성 할 때는 템플릿 이름을 템플릿 안에 포함시키는 것이 중요합니다. 생성 된 파일을 읽을 때 파일을 생성하는 데 사용 된 템플릿을 찾는 데 도움이됩니다.

고유 한 파일 이름이없는 디렉토리에서 모든 템플릿을 검색하고 찾은 템플릿을 인쇄하고 0이 아닌 코드가 있으면 종료합니다.

지금까지 이것은 내가 생각해 낸 것입니다.

find . -name "*.xyz" -exec sh -c 'grep -L $(basename {}) {}' \;

성공적으로 파일을 찾아 인쇄하지만 파일이 있는지 여부에 관계없이 종료 코드 0으로 종료됩니다. 관련 파일을 찾고 0이 아닌 코드가 있으면 어떻게 종료합니까?

답변:


1

관련 파일을 찾고 0이 아닌 코드가 있으면 어떻게 종료합니까?

결과를로 파이프하십시오 grep ''. 이 도구는 텍스트 스트림을 변경하지 않지만 종료 상태를 생성 0하거나 1행을 통과하는지 여부에 따라 생성 합니다.

다른 방법으로 원한다는 것을 알고 있습니다. 내가 당신이라면 나는 grep비록 그 행동에 적응할 것입니다. 나의 근거는 : 당신은 당신의 기준에 맞는 파일을 알고 싶다; 이 명령은 파일을 찾아서 하나 이상의 파일이 있는지 찾는 데 성공 합니다.

그러나 반대 행동을 고집한다면 종료 상태를 무시하십시오 . 예:

! find . -name "*.xyz" -exec sh -c 'grep -L "$(basename "$1")" "$1"' sh {} \; | grep ''

참고 sh내부에서 호출 을 디버깅했습니다 find. {}확장 하면 원래 접근 방식이 역효과를 낳 습니다 ./a;rm -rf ~;.xyz(많은 Linux 파일 시스템에서 유효한 파일 이름입니다).


0

어쩌면 뭔가 같은 grep .... && <do if found> || <do if not found>일을


0
for f in *.xyz; do
    grep -q $f $f || echo "$f does not contain itself"
done

찾고있는 파일 목록을 제공하지만 에코가 성공하기 때문에 여전히 0을 반환합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.