답변:
curl
가 -o
, --output
파일 이름 출력을 나타내는 하나의 인자는 대신에 작성해야합니다 옵션을 stdout
. URL에서 요소를 사용 {}
하거나 []
둘러싸고있는 경우 (일반적으로 여러 문서를 가져 오는 데 사용됨) #
파일 이름 지정자에서 숫자를 사용할 수 있습니다 . 이러한 각 변수는 가져올 URL의 해당 문자열로 바뀝니다. 여러 파일을 가져 오려면에 쉼표로 구분 된 토큰 목록을 추가하십시오 {}
. 가져올 URL의 일부가 순차적 인 경우을 사용하여 범위를 지정할 수 있습니다 []
.
예 :
curl http://www.abc.com/123/{def}/{ghi}/{jkl}.mno -o '#1_#2_#3.mno'
옵션 인수 주위에 따옴표를 사용하십시오 (파일 이름이 확장 변수 중 하나로 시작하지 않는 한 필요하지 않음) def_ghi_jkl.mno
. 그러면 출력 파일이 생성됩니다 .
curl http://www.abc.com/123/{def}/{ghi}/{jkl,pqr,stu}.mno -o '#1_#2_#3.mno'
이 출력 파일에 결과를해야한다 def_ghi_jkl.mno
, def_ghi_pqr.mno
와 def_ghi_stu.mno
.
curl http://www.abc.com/123/{def}/{ghi}/[1-3].mno -o '#1_#2_#3.mno'
출력 파일 def_ghi_1.mno
,, def_ghi_2.mno
이 나타납니다 def_ghi_3.mno
.
wget
저장할 파일 이름을 지정할 수 있는 스위치 -O
(긴 형식 --output-document
)가 있습니다. 컬은 아마도 비슷한 것을 가지고 있습니다. 그래서 당신은 할 수 있습니다 :
wget -O def_ghi_jkl.mno http://www.abc.com/123/def/ghi/jkl.mno
그리고 당신이 원하는 것을 할 것입니다.
이 이름 지정 체계를 자동화하려면 wget 주위에 래퍼를 만들 수 있지만 방탄을 얻는 것은 꽤 어려우며 분명히이 답변의 범위를 벗어납니다. (명시 적 URL에서 다운로드 한 단일 파일의 간단한 경우는 정확하게 이해하기 어렵지 않지만, 이것이 유일한 작동 모드는 아닙니다. 약간 사소한 경우로 이름을 지정하기 위해 여러 URL을 지정할 수 있습니다. 명령 줄에서.)
참고 -O
로 전혀 동일하지 않습니다 -o
쓰기의, wget을 자신의 출력 명명 된 파일.
다음은 Bash 대체 요령입니다.
link="http://www.abc.com/123/def/ghi/jkl.mno"
OutputFile=$( echo ${link:23: 23}| tr "/" "_" )
echo $OutputFile
def_ghi_jkl.mno
{$link:23: 23}
"제거 http://www.abc.com/123/ "그것이를 ${parameter:offset:length}
, 다음 tr
대체합니다 /
에 _
.
이제 wget 또는 curl과 함께 쉽게 사용할 수 있습니다.
wget $link -O $OutputFile
또한 awk을 사용할 수 있습니다. 입력 문자열에서 마지막 3 개의 파일을 추출합니다.
OutputFile=$( echo $link | awk -F/ 'BEGIN{OFS="_"}{ print $( NF-2),$(NF - 1 ),$NF}' )
컬을 선호하는 경우 가장 직접적인 방법은 다음과 같습니다.
curl -L -o <filename> "https://drive.google.com/uc?export=download&id=<file id>"
filename : 다운로드 한 파일의 이름
파일 ID : 형식에서 구글 드라이브의 웹보기에서 파일의 id https://drive.google.com/file/d/의 파일 ID /보기