2013-11-15 1 views

답변

18

:

for f in *.png; do NEW=${f%.png}@2x.png; mv ${f} "${NEW}"; done; 

편집 : flopr은 옳았 작업을해야 지금

4

이 그것을 수행해야합니다 그것을 저장

#!/bin/bash 
ls *.png | while read f 
do 
    BASE=${f%.png}   # Strip ".png" off end 
    NEW=${BASE}@2x.png  # Add in @2 
    echo mv "$f" "${NEW}" # Rename 
done 

을 Add2x라는 파일에 다음을 입력합니다

당신이 할 무슨 일 본
chmod +x Add2x 
./Add2x 

, "에코 단어를 제거 "그래서 실제로 그것을합니다. 나는 다음과 같은 한 줄에이 문제를 해결 할 수있었습니다 마크 Setchell의 대답의 도움으로

+1

감사합니다. 이것은 올바른 길로 나를 잡았습니다. 나는이 한 개의 라이너로 마침내 그것을 해결했다 : f in * .png; do NEW=${f%.png}@2x.png; mv $ {f} "$ {NEW}"; 끝난; – user1354603

+0

@ user1354603 그러면 사용자가 답변으로 게시해야합니다. 그렇다면 다른 사용자 만 받아 들여야합니다. 올바른 답변은 무엇입니까? whoch가 문제를 해결하는 데 도움이됩니다. – Vinodh

+0

괜찮습니다. 죄송합니다. – user1354603

7

는 나에게 뭔가를 추가하자 기부. 더 일반적인, 여러 형식 (JPG, PNG, ..)와 이름 "확장자 무료"(. 배 @ 패턴 < 이름> < 확장>) 하나 개 지어 솔루션이 될 것이다 :

for file in *; do mv "$file" "${file%.*}@2x.${file##*.}"; done 

이 같이 작동 매력. 희망은 도움이

0
내가 사용

재귀 하나 라이너 :

find -L . -type f -name "*.png" -exec bash -c 'echo "$0" "${0%.*}@2x.png"' {} \; 

기호 링크를 처리하기위한 -L은 ... 타입 f는 파일을 만

스왑 '에코'를 찾는 것입니다 ' mv '명령이 만족 스럽다면.

0

사실, 간단한 방법은 펄 rename 도구를 사용하여,이 ...라고

rename 's/(.+)\.png/$1\@2x.png/i' *.png 

... 는 "그 같은 문자로 .png@2x.png 다음에 하나 개 이상의 문자를 교체합니다. 수행 모든 PNG 파일에 대해 대소 문자를 구분하지 않는 방식으로 (i). "

rename 도구는 brew install rename을 사용하여 homebrew으로 쉽게 설치할 수 있습니다.

관련 문제