이 구문에서 curl을 사용하고 있습니다.
curl -o myfile.jpg http://mysite.com/myfile.jpg
이 명령을 두 번 실행하면 두 개의 파일이 생성됩니다.
myfile.jpg
myfile-1.jpg
CURL에 파일이 존재하는 경우 파일을 덮어 쓰도록하려면 어떻게해야합니까?
이 구문에서 curl을 사용하고 있습니다.
curl -o myfile.jpg http://mysite.com/myfile.jpg
이 명령을 두 번 실행하면 두 개의 파일이 생성됩니다.
myfile.jpg
myfile-1.jpg
CURL에 파일이 존재하는 경우 파일을 덮어 쓰도록하려면 어떻게해야합니까?
답변:
사용하다:
curl http://mysite.com/myfile.jpg > myfile.jpg
noclobber
옵션이 활성화되어 있지 않은지 확인하십시오 ( set +o noclobber
).
나는 같은 문제를 만났고 서버 측에서 제공하는 것과 동일한 파일 이름을 재사용하고 싶습니다. 귀하의 경우 파일 이름을 얻을 수 있습니다 basename
➸ basename 'http://mysite.com/myfile.jpg'
myfile.jpg
다음과 같이 도우미 bash 함수를 작성할 수 있습니다.
➸ function download { name="$(basename $1)"; curl "$1" > "$name"; }
➸ download 'http://mysite.com/myfile.jpg'
그러나 필자의 경우 파일 이름은 URL의 일부가 아니며 내용 처리와 함께 제공됩니다. curl 명령 줄은
$ curl -fSL -R -J -O 'http://some-site.com/getData.php?arg=1&arg2=...'
-fSL
서버 측에서 302 리디렉션을 제공하면 처리 하는 것을 무시할 수 있습니다 . -R
서버 측 타임 스탬프, -J
서버 측을 고려 Content-Disposition
하고, -O
대신 터미널에서 덤핑의 다운로드 동작으로 전환;
그러나 파일 이름이 존재하면 덮어 쓰기를 거부합니다. 서버 측 Last-Modified
타임 스탬프가 최신 버전 인 경우 덮어 쓰기를 원합니다 .
결국 wget 솔루션으로 끝날 수 있습니다.
$ wget -NS --content-disposition 'http://some-site.com/getData.php?arg=1&arg2=...'
는 -N
서버 측 tiemstamp을 확인 서버 측은 새로운 버전이있는 경우에만 덮어이고; 헤더 --content-disposition
를 고려하는 것입니다 Content-Disposition
. wget의 기본 동작은 서버 측에서 제공된 파일 이름으로 다운로드하는 것입니다.
귀하의 경우, 타임 스탬프를 신경 쓰지 않으면 그냥
$ wget -O myfile.jpg http://mysite.com/myfile.jpg
curl
시스템에서 어떤 버전을 사용합니까?