2013-11-15 14 views

cevap

18

:

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

Düzenleme: flopr haklıydı, çalışması gerekir şimdi

4

Bu yapmalıyım: bunun kaydet

#!/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 adlı bir dosyada, sonra yazın:

bunu yapmak ne olup bittiğini gördük
chmod +x Add2x 
./Add2x 

, "yankı sözcüğünü kaldırın "Yani gerçekten yapıyor. Aşağıdaki bir-liner ile bu çözmeyi başardı Mark Setchell cevabı yardımıyla

+1

Teşekkürler, bu beni doğru yolda buldunuz. Sonunda bu tek liner ile çözdüm: f için * .png; yapmak NEW=${f%.png}@2x.png; mv $ {f} "$ {NEW}"; yapılan; – user1354603

+0

@ user1354603 o zaman bunu bir cevap olarak göndermelisiniz, sonra onu kabul etmelisiniz, sadece başkaları = doğru cevabın ne olduğunu bilmek sorununuzu çözmeniz için yardımcı olur. – Vinodh

+0

tamam, yapacağız, üzgünüm Mark – user1354603

7

bana bir şeyler katalım katkı. Bir daha genel ve çok formatlı (jpg, png, ..) ve adı "uzantısı özgür" (. 2x @ desen < adı> < uzatma>) bir çizgili çözüm bu olacaktır:

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

Bu gibi çalışır bir çekicilik. Umarım yardımcı olur

0
kullandığım

A Recursive bir liner:

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

sembolik bağlantıları işlemek için -L ... tipi f dosyaları ile sadece

Swap 'echo' bulmak için ise ' mv 'komutu ne yapacağından memnunsanız.

0

Aslında daha basit bir yolu Perl rename aracını kullanarak, var ... diyor

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

... "bu aynı karakterle .png ve @2x.png ardından bir veya daha fazla karakter değiştirin. Do Bu, tüm PNG dosyaları için büyük/küçük harfe duyarlı bir şekilde (i). "

rename aracı, brew install rename kullanarak homebrew ile kolayca yüklenir.