Wget - 링크 이름을 딴 로컬 디렉터리에 파일 저장

Wget - 링크 이름을 딴 로컬 디렉터리에 파일 저장

저는 wget을 처음 사용하기 때문에 이것이 바보 같은 질문이 아니기를 바랍니다.

파일 링크 이름을 따서 명명된 로컬 디렉토리에 파일을 저장하려면 어떻게 해야 합니까?

다운로드에 리디렉션이 포함된 경우에는 작동하지 않는 것 같습니다.

예를 들어, 에서 파일을 다운로드한다고 가정하면 wget을 사용하여 하위 디렉터리 www.abc.com/news/xyz.jif라는 이름의 디렉터리에 로컬 복사본을 저장한 다음 file 을 저장할 수 있습니다 .www.abc.comnewsxyz.jif

그러나 파일이 xyz.jif이동 www.qwerty.com/old/xyz.jif되고 검색이 그곳으로 리디렉션된 경우 파일은 여전히 www.abc.com​​...etc 아래에 저장됩니다.

내가 말했듯이 나는 이것에 익숙하지 않으므로 문제를 올바르게 설명했으면 좋겠습니다.

다음은 간단한 실제 예입니다(wget 사용).

wget --force-directories www.smugmug.com/photos/1235566-S.jpg

c:\www.smugmug.com/photos/1235566-S.jpg 에 저장됩니다.부정확한. c:\suz.smugmug.com/photos/1235566-S.jpg리디렉션된 위치에 저장했어야 합니다 .

답변1

죄송합니다. 처음에는 요점을 파악하지 못했습니다. 따라서 완전히 새로운 답변(빠르고 더러운 - 그리고 bash 프로그래밍이므로 Linux에서만 작동함): cURL을 사용하여 리디렉션이 있는지 확인합니다( -w매개변수 사용). 결과에 따라 wget을 사용하여 원래 URL이나 리디렉션 대상을 가져옵니다.

url=www.smugmug.com/photos/1235566-S.jpg; redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`; if [ -z $redirurl ]; then wget -x $url; else wget -x $redirurl; fi

또는 여러 줄에:

url=www.smugmug.com/photos/1235566-S.jpg;
redirurl=`curl -w "%{redirect_url}" --output /dev/null --silent ${url}`;
if
    [ -z $redirurl ];
then wget -x $url;
else wget -x $redirurl; fi

redirurl리디렉션 대상이 있는 경우 해당 대상으로 설정됩니다. 그렇지 않은 경우 wget원래 URL로 호출됩니다. 그렇다면 wget리디렉션 대상을 호출합니다. 매개 -x변수는 wget하위 디렉토리를 생성합니다.

물론 이는 한 가지 수준의 리디렉션만 처리합니다. 더욱 강력하게 만들려면 리디렉션이 있는지 재귀적으로 확인해야 합니다. 따라서 이 문제를 안정적인 방법으로 해결하려는 경우 단순히 명령줄 옵션의 문제가 아닙니다.

관련 정보