spl 이름을 가진 새 폴더로 추출


2

OS X 10.8.3에서 작업하고 나머지 작업에 대한 도움을 기대하면서 작업하려는 부분이 있습니다.

#!/bin/bash
# script accepts a path to base dir - base path to extract
# also accepts second param - archive /xys/there/usefulLib-version-3.2.1.zip
# 1. cd to base
# 2. get name path of file, 'useful-lib-version-3.2.1.zip'
# 3. strip away extn and -._ spaces so its 'usefulLibversion321' if possible make init char capital of each token (from second) before removing the separator like 'usefulLibVersion321'
# 4. if this folder exists in base then add 1 or 2 or 3 till we get a new folder name, create that. cd to that new folder
# 5. give extract command to original file here (like jar xp -file- or other)


cd $1
file1=$2

file1fullname=$(basename $file1)
file1name=${file1fullname%.*}


echo ${file1fullname}

echo ${file1name}
file1sname=${file1name//./}

file1sname=${file1sname//-/}

file1sname=${file1sname//_/}
file1sname=${file1sname// /}
echo ${file1sname}

mkdir ${file1sname}
cd ${file1sname}
#could use other extract command, i know this one of java
jar xf $2

포인트 4에 대한 도움이 필요합니다.

동기 부여 : 다운로드 한 많은 jar 및 기타 아카이브를 빠르게 확장합니다. 때로는 스프링 및 기타 프레임 워크 및 유틸리티가있는 많은 .jar 파일을 얻습니다.


일반적으로 몇 주가 지나도 대답이 없을 때까지는 움직이지 않습니다. 이 경우 xyz *로 시작하는 파일 목록을 가져 와서 perl, bash, awk, sed 또는 다른 몇 가지 유닉스에서 수행 할 수있는 마지막 숫자를 증가시키는 것은 매우 간단한 경우입니다. 도구.
bmike

1
내가 생각하는 것을 살펴보면 먼저 항아리를 임시 디렉토리로 추출하고 오류를 확인한 다음 적절한 폴더 번호를 결정하는 기능을 만들어 해당 디렉토리를 제 위치로 옮길 것입니다. xxx1, xxx2, xxx3, xxx4가 폴더 이름 지정에 적합한 패턴이라고 확신하지 않는 한 날짜 또는 버전 스탬프를 사용하면 코딩 및 작업하기가 더 쉬울 수 있습니다 .9-> 10을 처리하는 방법이 명확하지 않기 때문입니다. 이름 충돌 감지 코드에서 99-> 100 (xxx1과의 충돌이 xxx11이되고 xxx111이되는 것을 원하지 않는다고 가정).
bmike

예 날짜가 너무 괜찮 마지막 번호 일부를 추가 할 수 있습니다 _1, _9 그래서 간다 _10 ... baseName_2013_06_10_11 내가 / 빈을 남겨 죄송합니다 /이 떠들썩한 파티 스크립트 @bmike입니다 쉬
tgkprog

답변:


2

아래의 날짜 이름 지정과 이름 충돌이 두 번 이상 발생하지 않는 방법은 어떻습니까? 믹스에 몇 초를 추가 할 수도 있지만 대부분의 경우 충분히 강력 해 보입니다.

DATE=$(date +"%Y%m%d%H%M")
final=${file1sname}_${DATE}
if [-a $final]
  then final=${file1sname}_${DATE}_1
  sleep 60 
  #we will prevent another run of this tool in the current minute 
fi
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.