質問

私はもともと、image_002.jpg、フォームimage_001.jpgのイメージのセットを持っていた...

私はそれらを介して行って、いくつか削除しました。今私は、image_002.jpg、バックimage_001.jpgに残ったファイルの名前を変更したいのですが...

これをきちんと行いますLinuxのコマンドはありますか?私は名前の変更に精通していますが、このようなファイル名を注文するために何かを見ることはできません。私はls *.jpgは、(ギャップの)ために、ファイルを一覧表示するので、解決策は、bashのループか何かにその出力を渡すだろうと考えています?

役に立ちましたか?

解決

私は右理解していれば、

、あなたは例えば持っていますimage_001.jpg、image_003.jpg、image_005.jpg、そしてあなたがimage_001.jpg、image_002.jpg、image_003.jpgに名前を変更したい。

編集:これは、現在のディレクトリに一時ファイルを置くように変更されます。 Stephan202が指摘したように、一時は異なるファイルシステム上にある場合、これは大きな違いを生むことができます。ループ内の一時ファイルを打つ避けるために、それは今

*画像を通過します
i=1; temp=$(mktemp -p .); for file in image*
do
mv "$file" $temp;
mv $temp $(printf "image_%0.3d.jpg" $i)
i=$((i + 1))
done                                      

他のヒント

単純なループ(echoテスト、mvで実行):

I=1
for F in *; do
  echo "$F" `printf image_%03d.jpg $I`
  #mv "$F" `printf image_%03d.jpg $I` 2>/dev/null || true
  I=$((I + 1))
done

(私はこれがあなたの好みに合わせていない場合は、マシューと一緒に行く。同じソースとターゲットのファイルに関する警告を抑制するために2>/dev/null || trueを追加しましたFlaschenする答えの。)

次のスクリプトを試してみてください。

numerate.shする

切り取らこのコードは、仕事をする必要があります

./numerate.sh -d <your image folder> -b <start number> -L 3 -p image_ -s .jpg -o numerically -r

これは、あなたが(フォーム*の.jpg.001のファイルを取って、それらに* .001.jpgを変換)求めているものの逆を行いますが、簡単にあなたの目的のために変更することができます:

for file in * 

do

if [[ "$file" =~ "(.*)\.([[:alpha:]]+)\.([[:digit:]]{3,})$" ]]

then

mv "${BASH_REMATCH[0]}" "${BASH_REMATCH[1]}.${BASH_REMATCH[3]}.${BASH_REMATCH[2]}"

fi

done

すでにここではいくつかの良い答え。しかし、いくつかは良いアイデア(?それはmvが原因で期待されている状態の唯一のエラー意志を前提と - 他のすべてのreaonsのmvについて何がエラーかもしれない)ではないエラーを隠すことに依存しています。

また、それは少し短いを行うことができ、より良い引用符で囲む必要があります:

for file in *; do
    printf -vsequenceImage 'image_%03d.jpg' "$((++i))"
    [[ -e $sequenceImage ]] || \
        mv "$file" "$sequenceImage"
done

また、あなたの変数を生かすべきではありませんhref="https://stackoverflow.com/questions/673055/correct-bash-and-shell-script-variable-capitalization/673940#673940">そののbashスクリプトでます。

私はforループを使用して、上記のようなものを提案するつもりだった、反復子は、-d -f1「_」をカットし、その後、MV I i.iterator。それはすでにかかわらず、他の方法をカバーしているように見えます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top