2012-11-07 2 views
1

_orig로 bash에서 일부 zip 파일의 이름을 바꾸려고하는데 뭔가 빠져있는 것처럼 보입니다. 어떤 제안 ??배시 셸 : 이름을 추가하는 방법

내 목표

:

mv -v $PICKUP/*.zip $ORIGINALS 
for origfile in $(ls $ORIGINALS/*.zip);do 
    echo "Adding _orig to zip file" 
    echo 
    added=$(basename $origfile '_orig').zip 
    mv -v $ORIGINALS/$origfile.zip $ORIGINALS/$added.zip 
done 
: 오리지널 디렉토리에

  • 이동 파일
  • 이름

코드에 "_orig"로 원본 파일의 이름을 바꾸은 필자가 작성하는 시도

죄송합니다.

답변

3

사용 (P) 이름 바꾸기 :

cd <ZIP DIR> 
mkdir -p orig 
rename '[email protected](.*?)\[email protected]/[email protected]' *.zip 

renamehttp://search.cpan.org/~pederst/rename/이다 (많은 배포판에 기본)

감사 globs와 대신

for i in $(ls $ORIGINALS/*.zip);do 

를 사용하지 만 사용 함으로 :

for i in $ORIGINALS/*.zip;do 

http://porkmail.org/era/unix/award.html#ls을 참조하십시오.

+0

thanks rename은 내가 필요한 것입니다. –

+0

** + 1 ** - 좋은 조언. – ghoti

1

나는 당신이 이미 해결책을 가지고 알고 있지만, 단지 후손을 위해, 자신의 쉘 스크립트의 단순화 된 버전은 또한 당신이 설명하는 것처럼 보이는 경우에 작동합니다 :

mkdir -p "$ORIGINALS" 
for file in "$PICKUP"/*.zip; do 
    mv -v "$file" "$ORIGINALS/${file%.zip}_orig.zip" 
done 

이 사용한다 bash의 "Parameter Expansion"(bash의 man 페이지에서 볼 수 있습니다). 처음 mkdir -p은 단순히 대상 디렉토리가 존재 함을 보증합니다. $PICKUP$ORIGINALS 주위의 따옴표는 디렉토리 이름에 공백이나 개행과 같은 특수 문자를 포함하는 것이 안전하도록하기위한 것입니다.

prename은 많은 문제에 대한 강력한 해결책이지만 툴박스의 유일한 해머는 아닙니다.

관련 문제