修正する

修正する

次の2つのフォルダ構造があります。

SOURCE_FOLDER_W_GOOD_NAMES
├── A_some_name.png
├── B_another_different_name.png
├── C_just_another_too.png
└── D_this_one_stop_this_example.png

他のフォルダ:

DESTINATION_FOLDER_W_INCREMENT_NAMES
├── icon_0.icns
├── icon_1.icns
├── icon_2.icns
└── icon_3.icns

したがって、デフォルトではSOURCE_FOLDERアルファベット順にソートされたファイルはすでに含まれています。このソート順はすでに一致していますDESTINATION_FOLDER(例:A_some_name.png=== icon_0.icns)。

このループの組み合わせを使用してファイル名を変更します。

i=0
j=0
for img in SOURCE_FOLDER/*.png; do
  for i in {0..10000}; do
    let j++ || true;
    mv "SOURCE_FOLDER/icon_$i.icns" "DESTINATION_FOLDER/${img%.*}.icns"
  done
done

上記のフォルダのルートにあるコマンドラインでこれを行いました(上記はフォーマットされており、1行で書かれています)。

THE_FATHER_FOLDER
├── SOURCE_FOLDER_W_GOOD_NAMES
└── DESTINATION_FOLDER_W_INCREMENT_NAMES

残念ながら、上記のループは期待どおりに機能しません。私が間違っていると確信していますが、どこにいるのかわかりません。

私の言葉を訂正してください。

修正する

上記の問題に対する解決策は私が直接解決しました。

counter=0
for img in SOURCE_FOLDER/*.png; do
  let counter++ || true;
  mv "SOURCE_FOLDER/icon_$counter.icns" "DESTINATION_FOLDER/${img%.*}.icns"
done

しかし、このフォルダにはまだ問題があります。

DESTINATION_FOLDER_W_INCREMENT_NAMES
├── icon_0.icns
├── icon_1.icns
├── icon_2.icns
└── icon_3.icns

再度インデックスを作成したいと思います。1変える0だから私はこれを使っています:

counter=0
for index in {0..final_number}; do
  let counter++ || true;
  mv "icon_${index}.icns" "icon_${counter}.icns";
done

現在私のファイルの場所は次のとおりです。0そしてついに得る最終番号 - 1したがって、このフォルダ内のすべての単一のファイルが上書きされ、最初のファイル(icon_0)のみがインポートされ、完了したら名前を(icon_final_number)に変更します。

この問題をどのように解決できますか?

答え1

名前を変更したいですか?戻る:

counter=$((final_number + 1))
for index in {final_number..0}; do
  mv "icon_${index}.icns" "icon_${counter}.icns";
  let counter--;
done

答え2

次のコードを使用すると問題が解決します。

#!/bin/sh

i=0
for img in `ls SOURCE_FOLDER_W_GOOD_NAMES/*.png`; do
        mv $img DESTINATION_FOLDER_W_INCREMENT_NAMES/icon_$i.icns
        i=$((i+1));
done

答え3

0の代わりに1の値でカウンタを初期化し、移動が完了した後にそれをインクリメントします。これにより、ファイル名を変更するためにセカンダリbashスクリプトを実行する必要がなくなり、元のスクリプトで問題を解決できます。

また、カウンタを増やすときに「||true」を追加するのはなぜですか?それは言葉ではありません。このコードを試してください

counter=1
for img in SOURCE_FOLDER/*.png; do
  mv "SOURCE_FOLDER/icon_$counter.icns" "DESTINATION_FOLDER/${img%.*}.icns"
  let counter++
done

関連情報