wget -o는 실패시 빈 파일을 씁니다. 비워 둡니다. 그러나 -o를 사용하지

wget “no such address”-o “test.html”을 쓰면 먼저 test.html을 만들고 실패 할 경우 비워 둡니다. 그러나 -o를 사용하지 않으면 다운로드가 성공했는지 확인한 후 기다렸다가 파일을 작성합니다.

후자의 동작을 -o에도 적용하고 싶습니다. 가능합니까?



답변

wget URL을 찾을 수 없으면 0이 아닌 종료 상태를 반환하므로 실패시 remove 명령을 추가 할 수 있습니다.

wget "url" -O file || rm -f file

또는 임시 파일을 만들어 성공할 때만 이동하십시오.

wget "url" -O /tmp/wget && mv /tmp/wget file

두 번째는 실패시 기존 파일을 삭제하지 않는 이점이 있지만 man tempfile여러 인스턴스를 병렬로 실행하는 경우 고유 한 임시 이름 (참조 )을 사용해야합니다.


답변

주석에 쓰여 있듯이 오류와 상관없이 항상 파일에 쓰는 wget -O 쉘 리디렉션과 비슷 합니다.

curl -f대신 사용할 수 있습니다 .

curl -f http://nonexistent/file.jpg -o localfile.jpg

파일을 가져 오는 중에 오류가 발생하면 로컬 파일을 건드리지 않습니다.


답변

올바른 구문은

wget "url" -O file

대문자 O를 주목하십시오. -o 옵션은 wget에게 로그 파일 을 작성 하도록 지시 합니다. 따라서 실패시에도 항상 기록됩니다.


답변

도움말 doc (wget -h)에 따르면 –spider 옵션을 사용하여 다운로드 (버전 1.14)를 건너 뛸 수 있습니다.

Download:
  -S,  --server-response         print server response.
       --spider                  don't download anything.