find를 이용해 찾을수없는 파일이름을 저장하는 방법.

freezone318의 이미지

find명령어를 이용해 찾고자 하는 파일을 찾을 수 없을때 그 파일명을 따로 리스트를 만들어 저장 하려고 합니다.

어떤 방법을 이용해야 할까요?

find에서 파일을 찾을수 없을 경우 리턴값이 따로 있는경우 그 리턴값을 이용하면 될 것 같은데요...

그 리턴값을 어떻게 알수있는지 모르겠습니다.

혹시 다른 방법이 있는지 문의 드립니다.

답변 미리 감사드립니다.

Fe.head의 이미지

#!/bin/sh
file="test"
isExist=$(find . -name "$file" | head -1)
if [ -z "$isExist" ] ; then
    echo "$file" >> fileIsNot.txt
fi

이정도면 될듯.
-----------------------
과거를 알고 싶거든 오늘의 네 모습을 보아라. 그것이 과거의 너니라.
그리고 내일을 알고 싶으냐?
그러면 오늘의 너를 보아라. 그것이 바로 미래의 너니라.

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

cinsk의 이미지

질문하신 내용이, 이미 알고 있는 pathname이 실제로 파일 시스템 안에 존재하는지 여부를 판단하는 것인가요? 그러면 궂이 find 명령을 쓸 필요도 없이 test(1) 명령으로 바로 알 수 있을텐데요. 찾고자 하는 파일 이름이 $TARGET에 저장되어 있다면:

if test ! -f "$TARGET"; then
  echo "$TARGET" >> notfound.log
fi

찾고자 하는 파일 이름이 여러개이고, targets란 파일에 줄 단위로 저장되어 있다면:

cat targets | while read f; do
  if test ! -f "$f"; then
    echo "$f" >> notfound.log
  fi
done


--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/