2013-11-15 7 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

ありがとう、これは正しい軌道に乗った。私はついにこの1つのライナーでそれを解決しました:f in * .png; do NEW=${f%.png}@2x.png; mv $ {f} "$ {NEW}";完了しました。 – user1354603

+0

@ user1354603あなたはこれを回答として投稿しなければなりません。あなたはそれを受け入れなければならず、他人だけが正しい答えを知っています。whochは問題を解決するのに役立ちます。 – Vinodh

+0

ok、 – user1354603

7

私に何かを追加してみましょう動作するはずです貢献。 より一般的な、複数のフォーマット(JPG、PNG、...)と名 "拡張子自由"(2X @パターン<名> <拡張子>。)1つの並びソリューションは、このようになります:

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

これは以下のように動作します魅力。それは私が使用

0

A再帰1つのライナーホープ:シンボリックリンクを処理するための

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

-Lを... タイプfはファイルに "とだけ

スワップ「エコー」を見つけるためのものですあなたがコマンドが何をするのに満足すればmv 'です。

0

実際には、もっと簡単な方法は、Perlのrenameツールを使用して、そこにある...と言う

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

... は、「これらの同じ文字によって.png@2x.pngに続く1文字以上の文字を交換してください。ですかすべてのPNGファイルの大文字小文字を区別しない方法で(i

renameツールは、brew install renameを使用してhomebrewと簡単にインストールできます。

関連する問題