wget이 기존 파일 이름을 현명하게 바꾸도록 합니다.

wget이 기존 파일 이름을 현명하게 바꾸도록 합니다.

사용된 파일 이름이 이미 존재하는 경우 wget파일 이름을 로 바꿉니다 . 이름을 기본값으로 filename.extension.1바꿔야 합니까 ?filename.1.extension

답변1

아니요.

wget파일 이름을 해석하거나 구문 분석하거나 이해하려고 시도하지 않고 기존 파일 이름에 백업 접미사를 추가합니다. 이는 파일 백업을 생성하는 다른 유틸리티의 기본 동작과도 일치합니다.

editor vim및 (대부분의 다른 편집기)는 파일 이름에 백업 접미사를 추가하도록 구성할 수 있습니다(기본적으로 emacs세 가지 모두). 스트림 편집기를 사용하면 원본 콘텐츠( 파일 이름 끝에 추가됨 ) 의 백업을 사용하는 동안 내부 편집이 가능합니다 . GNU 와 유틸리티는 다양한 복잡성의 백업을 만들 수 있지만 항상 파일 이름 끝에 접미사를 추가합니다. 마찬가지로 원본 파일을 업데이트된 파일로 바꾸기 전에 파일에 접미사를 추가할 수 있습니다. 등.nano~sedsed -i.suffix.suffixmvcprsync

파일 이름 중간에 백업 번호를 추가하는 것은 문제가 됩니다. 특히 파일 이름 /에 .file.tar.gzmyfile.7

답변2

일단 다운로드하면

perl-rename -i "s/(.*)(\.extension)(\.[0-9]+)$/\1\3\2/" *

rename사용 가능한 모든 버전에 대해.

Pass 기존 파일을 덮어쓰지 않으려면 perl-rename이 옵션을 사용하십시오 . "시험 실행" -i에 사용됩니다 .-n

답변3

내 솔루션을 공유하고 싶었습니다.

alias wget='func(){ (wget --tries=0 --retry-connrefused --timeout=30 -O download_pkg.tmp "$1" && mv download_pkg.tmp "${1##*/}") || rm download_pkg.tmp; unset -f func; }; func

임시 이름으로 파일을 다운로드하기 위해 "url" 매개변수를 받는 함수를 생성합니다. 성공하면 ${1##*/}를 사용하여 매개변수 $1에서 추출된 올바른 파일 이름으로 이름이 변경됩니다. 실패하면 임시 파일이 삭제됩니다. 작업이 중단되면 다음에 실행될 때 임시 파일이 교체됩니다. 결국 unset -f는 별칭을 실행할 때 함수 정의를 제거합니다.

관련 정보