5

このタイトルはややこしいので、分解してみましょう。基本的に、さまざまな名前と拡張子を持つファイルの完全なディレクトリがあります。

MainDirectory/
    image_1.png
    foobar.jpeg
    myFile.txt

iPad アプリの場合、拡張子の前に、これらすべてのファイル名の最後にサフィックス@2Xを追加して、これらのコピーを作成する必要があるため、次のようになります。

MainDirectory/
    image_1.png
    image_1@2X.png
    foobar.jpeg
    foobar@2X.jpeg
    myFile.txt
    myFile@2X.txt

ファイル名を一度に 1 つずつ手動で変更する代わりに、スクリプトを作成して処理したいと考えています。現在、次のものがありますが、期待どおりに機能しません。

#!/bin/bash

FILE_DIR=.

#if there is an argument, use that as the files directory. Otherwise, use .
if [ $# -eq 1 ]
then
  $FILE_DIR=$1
fi

for f in $FILE_DIR/*
do
  echo "Processing $f"
  filename=$(basename "$fullfile")
  extension="${filename##*.}"
  filename="${filename%.*}"
  newFileName=$(echo -n $filename; echo -n -@2X; echo -n $extension)
  echo Creating $newFileName
  cp $f newFileName
done

exit 0

また、これを純粋な bash に保持し、OS 固有の呼び出しに依存したくありません。私は何を間違っていますか?必要なことを行うために、何を変更できますか、またはどのコードが機能しますか?

4

2 に答える 2

6
#!/bin/sh -e 
cd "${1-.}"

for f in *; do  
  cp "$f" "${f%.*}@2x.${f##*.}"
done
于 2012-10-11T16:26:54.743 に答える