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

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

예를 들어 링크가 있습니다 http://www.abc.com/123/def/ghi/jkl.mno. wget또는 을 사용하여 다운로드 하고 링크에서 해당 부분을 가져온 curl출력 파일의 이름을 얻고 싶습니다 .def_ghi_jkl.mnodef_ghi

wget출력 파일 이름을 명시적으로 제공하지 않도록 여러 파일을 다운로드하는 스크립트에 이 명령을 넣을 것입니다 .

답변1

curl대신 파일 이름 출력을 써야 함을 나타내는 단일 인수를 취하는 옵션 -o이 있습니다 . 이러한 각 변수는 얻은 URL에 해당하는 문자열로 대체됩니다. 여러 파일을 가져오려면 에 범위를 지정하세요 . 가져오려는 URL 부분이 연속된 숫자인 경우 지정된 범위를 사용할 수 있습니다 .--outputstdout{}[]#{}[]

예:

  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에서 단일 파일을 다운로드하는 간단한 경우는 올바른 결과를 얻는 것이 어렵지 않지만 이것이 wget의 유일한 작동 모드는 아닙니다. 이 프로세스를 약간 평범하게 만드는 한 가지 경우로서 여러 URL을 지정할 수 있습니다. 명령줄에서).

글쓰기와 -O관련이 있으니 참고해주세요-owget 자체 출력지정된 파일에.

답변3

컬을 좋아한다면 가장 직접적인 방법은 다음과 같습니다.

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

filename: 다운로드한 파일 이름

파일 ID: Google 드라이브 웹 보기에 있는 파일의 ID(형식)https://drive.google.com/file/d/파일 번호/보다

답변4

필요한 파일 이름은 자체적으로 파생될 수 없으므로 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 / _)"

관련 정보