URL을 기반으로 사용자 정의 파일 이름에 wget 또는 curl 출력을 씁니다.


12

예를 들어 링크가 http://www.abc.com/123/def/ghi/jkl.mno있습니다. 나는 그것을 사용하여 다운로드 할 wgetcurl하고 출력 파일의 이름을 얻을 def_ghi_jkl.mno부분이 def_ghi링크에서 촬영됩니다.

wget명령을 스크립트에 넣어 여러 파일을 다운로드하여 출력 파일 이름을 명시 적으로 지정할 수 없습니다.

답변:


15

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.mnodef_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.


2

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을 자신의 출력 명명 된 파일.


스크립트의 일부이므로 명시 적으로 파일 이름을 지정하면 작동하지 않습니다.
gvz

왜 안돼? 스크립트에서 wget 또는 curl이 호출된다는 사실은 어떻습니까? (그리고 실제로 어떤 답변이 효과가 있을지에 대한 제약이 있다면, 그 정보는 실제로 처음부터 질문에 들어가야합니다.)
CVn

0

다음은 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}' )

0

필요한 파일 이름은 wget자체적 으로 파생 될 수 없으므로 셸 스크립트로 처리해야합니다.

$ url='http://www.example.com/123/def/ghi/jkl.mno'
$ outFile=$(echo "$url" | cut -d /  -f 5- | tr / _)
$ echo $outFile 
def_ghi_jkl.mno
$ wget "$url" -O "$outFile"

또는 한 줄로 좋아하는 경우 :

wget "$url" -O "$(echo "$url" | cut -d /  -f 5- | tr / _)"

0

컬을 선호하는 경우 가장 직접적인 방법은 다음과 같습니다.

curl -L -o <filename> "https://drive.google.com/uc?export=download&id=<file id>"

filename : 다운로드 한 파일의 이름

파일 ID : 형식에서 구글 드라이브의 웹보기에서 파일의 id https://drive.google.com/file/d/의 파일 ID /보기

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